1 安装编译打包工具
1).安装sbt
sbt是一款Spark用来对scala编写程序进行打包的工具,Spark 中没有自带 sbt,需要下载安装
下载sbt安装包以后,执行如下命令拷贝至 /usr/local/sbt 中:
接着在 /usr/local/sbt 中创建 sbt 脚本(vim ./sbt),添加如下内容:
// An highlighted block
#!/bin/bash
SBT_OPTS="-Xms512M -Xmx1536M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256M"
java $SBT_OPTS -jar `dirname $0`/sbt-launch.jar "$@"
保存后,为 ./sbt 脚本增加可执行权限:
最后运行如下命令,检验 sbt 是否可用(需要几分钟时间)(请确保电脑处于联网状态,首次运行会处于 “Getting org.scala-sbt sbt 0.13.11 …” 的下载状态,请耐心等待。笔者等待了 7 分钟才出现第一条下载提示):
只要能得到如下图的版本信息就没问题:
2). 安装Maven
下载到Maven安装文件以后,保存到“~/下载”目录下。然后,可以选择安装在“/usr/local/maven”目录中,命令如下:
// An highlighted block
$ sudo unzip ~/下载/apache-maven-3.3.9-bin.zip -d /usr/local
$ cd /usr/local
$ sudo mv ./apache-maven-3.3.9 ./maven
$ sudo chown -R hadoop ./maven
在终端中执行如下命令创建一个文件夹 sparkapp 作为应用程序根目录:
在 ./sparkapp/src/main/scala 下建立一个名为 SimpleApp.scala 的文件,添加代码如下
2 编写Spark应用程序代码
该程序计算 /usr/local/spark/README 文件中包含 “a” 的行数 和包含 “b” 的行数。代码第8行的 /usr/local/spark 为 Spark 的安装目录,如果不是该目录请自行修改。
不同于 Spark shell交互式环境(P99),独立应用程序需要通过 val sc = new SparkContext(conf) 初始化 SparkContext,SparkContext 的参数 SparkConf 包含了应用程序的信息。
3 编译打包
-1. 使用sbt对Scala 程序进行编译打包
请在./sparkapp 中新建文件 simple.sbt(vim ./sparkapp/simple.sbt),添加内容如下,声明该独立应用程序的信息以及与 Spark 的依赖关系:
name := “Simple Project”
version := “1.0”
scalaVersion := “2.11.8”
libraryDependencies += “org.apache.spark” %% “spark-core” % “2.1.0”
Spark和Scala的版本信息可以在启动信息中找到
为保证 sbt 能正常运行,先执行如下命令检查整个应用程序的文件结构:
文件结构应如下图所示:
接着,我们就可以通过如下代码将整个应用程序打包成 JAR(首次运行同样需要下载依赖包 ):