每日随笔——使用sbt对Scala独立应用程序进行编译打包
使用sbt对Scala独立应用程序进行编译打包
1. 安装sbt
使用Scala语言编写的Spark程序,需要使用sbt进行编译打包。Spark中没有自带sbt,需要单独安装。可以在网盘下载sbt安装文件sbt-1.9.0.tgz。
网盘地址:https://pan.baidu.com/s/181shkgg-i0WEytQMqeeqxA(提取码:9ekc )
sudo mkdir /export/server/sbt sudo tar -zxvf /export/server/sbt-1.9.0.tgz -C /export/server/ cd /export/server/sbt sudo chown -R hadoop /export/server/sbt cp ./bin/sbt-launch.jar ./
安装目录中使用下面命令创建一个Shell脚本文件,用于启动sbt:
vim /export/server/sbt/sbt
#!/bin/bash
SBT_OPTS="-Xms512M -Xmx1536M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256M"
java $SBT_OPTS -jar `dirname $0`/sbt-launch.jar "$@"
增加权限
chmod u+x /export/server/sbt/sbt
查看版本信息
cd /export/server/sbt
./sbt sbtVersion
安装完成
2. Scala应用程序代码
创建一个文件夹 sparkapp 作为应用程序根目录
cd /export/server/ # 进入用户主文件夹
mkdir sparkapp # 创建应用程序根目录
mkdir -p ./sparkapp/src/main/scala
建立一个名为 SimpleApp.scala 的文件
vim ./sparkapp/src/main/scala/SimpleApp.scala import org.apache.spark.SparkContext import org.apache.spark.SparkContext._ import org.apache.spark.SparkConf object SimpleApp { def main(args: Array[String]) { val logFile = "file:///export/server/spark/README.md" // Should be some file on your system val conf = new SparkConf().setAppName("Simple Application") val sc = new SparkContext(conf) val logData = sc.textFile(logFile, 2).cache() val numAs = logData.filter(line => line.contains("a")).count() val numBs = logData.filter(line => line.contains("b")).count() println("Lines with a: %s, Lines with b: %s".format(numAs, numBs)) } }
该程序依赖 Spark API,因此我们需要通过 sbt 进行编译打包。 在sparkapp这个目录中新建文件simple.sbt,命令如下
cd export/server/sparkapp vim simple.sbt 添加依赖内容 name := "Simple Project" version := "1.0" scalaVersion := "2.12.17" libraryDependencies += "org.apache.spark" %% "spark-core" % "3.4.0"
版本号可以自行查看,上文有介绍
3. 使用 sbt 打包 Scala 程序
/export/server/sbt/sbt package
4. 通过 spark-submit 运行程序