sbt是一款Spark用来对scala编写程序进行打包的工具, Spark 中没有自带 sbt , 需要自行下载 sbt-lanuch.jar
我们选择安装在 /usr/local/sbt 中
sudo mkdir /usr/local/sbt
sudo chown -R hadoop /usr/local/sbt
cd /usr/local/sbt
将下载的 jar 包放到该目录下, 并创建 sbt 脚本,添加如下内容:
#!/bin/bash
SBT_OPTS="-Xms512M -Xmx1536M -Xss1M -XX:+CMSClassUnloadingEnabled"
java $SBT_OPTS -jar `dirname $0`/sbt-launch.jar "$@"
并为其添加执行权限 chmod u+x ./sbt
最后执行一下命令检查一下 sbt 是否可用 ./sbt sbt-version
进入程序目录,必须要保证目录为以下格式
.
./BulkloadHbaseData.sbt
./src
./src/main
./src/main/scala
./src/main/scala/BulkloadHbaseData.scala
然后编写 sbt 文件。这里需要指定好 scala 的版本 和 spark 的版本, 如下所示
name:="BulkloadHbaseData"
version:="1.0"
//scala版本
scalaVersion:="2.11.12"
//jdk版本
javacOptions++=Seq("-source","1.8","-target","1.8")
//托管的依赖,这一部分会通过网络下载
//依赖项,%%表示找对应scala版本的jar包,一般%;%"provided"表示此jar不打入最终的jar文件内
libraryDependencies+="org.apache.spark"%%"spark-core"%"2.4.0"%"provided"
libraryDependencies+="org.apache.spark"%%"spark-sql"%"2.4.0"%"provided"
libraryDependencies+="org.apache.spark"%%"spark-streaming"%"2.4.0"%"provided"
libraryDependencies+="org.apache.hbase"%"hbase-client"%"2.1.1"
libraryDependencies+="org.apache.hbase"%"hbase-common"%"2.1.1"
libraryDependencies+="org.apache.hbase"%"hbase-server"%"2.1.1"
//非托管的依赖,这里放我们自行编译的jar包
unmanagedBase:=baseDirectory.value/"lib"
如果要加载插件的话,则需要在根目录建立 project 目录, 并在 project/plugins.sbt 中写上要加入的插件,如下所示
addSbtPlugin("io.get-coursier"%"sbt-coursier"%"1.0.0-RC13")
addSbtPlugin("com.eed3si9n"%"sbt-assembly"%"0.13.0")
然后在 根目录下的sbt 文件中添加相应的插件指令, 如下所示
//打包时,排除scala类库
assemblyOptioninassembly:=(assemblyOptioninassembly).value.copy(includeScala=false)
最后然后在目录下使用命令打包 /usr/local/sbt/sbt package