- 一、下载sbt
- 二、配置sbt
- 三、使用sbt编译打包Scala程序
- 四、总结
一、下载sbt
需要下载的文件名为 sbt-launch.jar,下载链接如下:https://repo.typesafe.com/typesafe/ivy-releases/org.scala-sbt/sbt-launch/0.13.11/sbt-launch.jar,点进去等一下就会弹出下载界面。
二、配置sbt
在 /usr/local/ 目录下创建 sbt 文件夹,并赋予 hadoop 用户相关权限:
cd /usr/local sudo mkdir sbt sudo chown -R hadoop ./sbt
移动下载号的 sbt-launch.jar 到上述目录下:
cp ~/Downloads/sbt-launch.jar ./sbt cd sbt
编写 sbt 脚本:
vim ./sbt
编写内容如下:
#!/bin/bash SBT_OPTS="-Xms512M -Xmx1536M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256M" java $SBT_OPTS -jar `dirname $0`/sbt-launch.jar "$@"
:wq,保存并退出,赋予脚本相关权限:
sudo chmod u+x ./sbt
接着运行 sbt 脚本,查看 sbt 版本并下载相关依赖包:
sudo ./sbt sbtVersion
过程可能需要等待挺久的,会显示成功下载部分文件:
下载完成后会输出 sbt 版本信息如下:
若中途失败,多试几次即可。
三、使用sbt编译打包Scala程序
首先创建程序根目录以及程序所需的文件结构:
mkdir ~/sparkapp mkdir -p ~/sparkapp/src/main/scala
在上述目录下创建我们的 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:///usr/local/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))
}
}
接着创建一个 simple.sbt 文件:
vim ~/sparkapp/simple.sbt
内容如下:
name := "Simple Project" version := "1.0" scalaVersion := "2.12.15" libraryDependencies += "org.apache.spark" %% "spark-core" % "3.2.0"
注意这里的 scalaVersion 是你的 Scala 版本,spark-core 是你的 spark 版本,查看方法启动 spark-shell 即可:
/usr/local/spark/bin/spark-shell
输出如下:
最后使用 sbt 进行打包:
sudo /usr/local/sbt/sbt package
成功输出如下:
中途出现 warn 多运行几次,生成的 jar 包路径如下:~/sparkapp/target/scala-2.12/simple-project_2.12-1.0.jar,可以通过 spark-submit 提交运行:
/usr/local/spark/bin/spark-submit --class "SimpleApp" ~/sparkapp/target/scala-2.12/simple-project_2.12-1.0.jar 2>& 1 | grep Lines
执行结果如下:
四、总结



