zoukankan      html  css  js  c++  java
  • SBT安装及命令行打包spark程序

    1.从https://www.scala-sbt.org/download.html官网上寻找所需要的安装包

    可以直接本地下载完扔进去也可以wget路径,在这里我用的是sbt1.2.8版本的,下载到/usr/local目录下

    2.将下载的sbt文件中的sbt-launch.jar拷贝到/usr/local/下的sbt目录中的一级目录下

    3.在/usr/local/sbt中创建一个sbt脚本(vim ./sbt),添加以下内容:

    SBT_OPTS="-Xms512M -Xmx1536M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256M"
    java $SBT_OPTS -jar `dirname $0`/sbt-launch.jar "$@"
     

    4.修改脚本权限

    chmod u+x ./sbt

    5.修改依赖源(此处修改为阿里源)

    vim ~/.sbt/repositories
    修改内容如下:
    [repositories]
    local
    aliyun-nexus: http://maven.aliyun.com/nexus/content/groups/public/
    typesafe: http://repo.typesafe.com/typesafe/ivy-releases/, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext], bootOnly
    sonatype-oss-releases
    maven-central
    sonatype-oss-snapshots

    6.定位阿里源

    进入这两个文件,
    vim sbtconfig.txt
    vim sbtopts
    将此行代码加入两个文件的最后一行
    -Dsbt.override.build.repos=true

    7.检验 sbt 是否可用,耐心等待,一般需要下载好几分钟的,但是如果等待的时间特别长,那建议换源,前面的阿里源就是我针对这个问题而换的,如果你是按照我前面的操作来做的话,那很快就能成功。

     ./sbt sbtVersion
    最后出现版本信息就可以了

    8.接下来进行spark第一个应用程序的打包执行

    1)首先进入用户的主文件夹

    cd ~

    创建应用程序根目录

    mkdir sparkapp

    创建所需的文件夹结构

    mkdir -p ./sparkapp/src/main/scala

    2)在./sparkapp/src/main/scala下建立一个SimpleApp.scala的文件

    vim ./sparkapp/src/main/scala/SimpleApp.scala

    内容如下:

     1 /* SimpleApp.scala */
     2 import org.apache.spark.SparkContext
     3 import org.apache.spark.SparkContext._
     4 import org.apache.spark.SparkConf
     5  
     6 object SimpleApp {
     7 def main(args: Array[String]) {
     8 val logFile = "file:///usr/local/spark-2.4.3/README.md"
     9 val conf = new SparkConf().setAppName("Simple Application")
    10 val sc = new SparkContext(conf)
    11 val logData = sc.textFile(logFile, 2).cache()
    12 val numAs = logData.filter(line => line.contains("a")).count()
    13 val numBs = logData.filter(line => line.contains("b")).count()
    14 println("Lines with a: %s, Lines with b: %s".format(numAs, numBs))
    15 }
    16 }
    该程序计算 /usr/local/spark/README 文件中包含 “a” 的行数 和包含 “b” 的行数。代码第8行的 /usr/local/spark 为 Spark 的安装目录,如果不是该目录请自行修改。不同于 Spark shell,独立应用程序需要通过 val sc = new SparkContext(conf) 初始化 SparkContext,SparkContext 的参数 SparkConf 包含了应用程序的信息。
    该程序依赖 Spark API,因此我们需要通过 sbt 进行编译打包。 ./sparkapp 中新建文件 simple.sbt(vim ./sparkapp/simple.sbt),添加内容如下,声明该独立应用程序的信息以及与 Spark 的依赖关系:
    name := "Simple Project"
    version := "1.0"
    scalaVersion := "2.11.12"
    libraryDependencies += "org.apache.spark" %% "spark-core" % "2.4.3"
    文件 simpale.sbt 需要指明 Spark 和 Scla 的版本。在上面的配置信息中,scalaVersion用来指定scala的版本,sparkcore用来指定spark的版本,这两个版本信息都可以在之前的启动 Spark shell 的过程中,从屏幕的显示信息中找到。下面就是笔者在启动过程当中,看到的相关版本信息(备注:屏幕显示信息会很长,需要往回滚动屏幕仔细寻找信息)。

    3)使用 sbt 打包 Scala 程序

    cd ~/sparkapp
    find .
    接着,我们就可以通过如下代码将整个应用程序打包成 JAR(首次运行同样需要下载依赖包 ):
    /usr/local/sbt/sbt package
    生成的jar包的位置为:
    ~/sparkapp/target/scala-2.11/simple-project_2.11-1.0.jar

    4)通过spark-submit运行程序,将生成的jar包通过是spark-submit提交到spark中运行

    /usr/local/spark-2.4.3/bin/spark-submit --class "SimpleApp" ~/sparkapp/target/scala-2.11/simple-project_2.11-1.0.jar
    上面的命令输出的东西会特别多,所以也可以通过管道化来筛选跟输出指定的信息
    /usr/local/spark-2.4.3/bin/spark-submit --class "SimpleApp" ~/sparkapp/target/scala-2.11/simple-project_2.11-1.0.jar 2>&1 | grep "Lines with a:"
  • 相关阅读:
    常用的XML读写
    未能使用提供程序 "RsaProtectedConfigurationProvider" 进行解密 的解决办法
    (原创)Urlrewrite 独立配置文件的使用方法
    The Two Interceptors: HttpModule and HttpHandlers
    根据最后修改时间查询存储过程
    Net下WinForm皮肤插件资源
    C# 主线程 辅助线程
    浅述WinForm多线程编程与Control.Invoke的应用
    ASP.NET实现图片防盗链
    URLRewrite 实现方法详解
  • 原文地址:https://www.cnblogs.com/xiaolan-Lin/p/11343533.html
Copyright © 2011-2022 走看看