sbt 是 scala 的编译工具
安装:
curl https://bintray.com/sbt/rpm/rpm > bintray-sbt-rpm.repo
sudo mv bintray-sbt-rpm.repo /etc/yum.repos.d/
sudo yum install sbt
验证:(会等很长时间)
root@hadoop01 ~]# sbt
sbt:root>
常用命令 :
常用命令 (compile编译、package打jar包)
下面是一些非常常用的的 sbt 命令。更加详细的列表请参见 命令行参考。
clean 删除所有生成的文件 (在 target 目录下)。
compile 编译源文件(在 src/main/scala 和 src/main/java 目录下)。
test 编译和运行所有测试。
console 进入到一个包含所有编译的文件和所有依赖的 classpath 的 Scala 解析器。输入 :quit, Ctrl+D (Unix),或者 Ctrl+Z (Windows) 返回到 sbt。
run <参数>* 在和 sbt 所处的同一个虚拟机上执行项目的 main class。
package 将 src/main/resources 下的文件和 src/main/scala 以及 src/main/java 中编译出来的 class 文件打包成一个 jar 文件。
help <命令> 显示指定的命令的详细帮助信息。如果没有指定命令,会显示所有命令的简介。
reload 重新加载构建定义(build.sbt, project/*.scala, project/*.sbt 这些文件中定义的内容)。在修改了构建定义文件之后需要重新加载。
build.sbt
build.sbt中每行之间要有空行
name := "hello" // 应目名称
organization := "xxx.xxx.xxx" // 应应名称
version := "0.0.1-SNAPSHOT" // 版本号
scalaVersion := "2.9.2" // 使用的Scala版本号
// 其它build定应
打包:
创建一个文件夹,
放入两个文件:WordCount.scala和word-count.sbt
WordCount.scala:
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
object WordCount {
def main(args: Array[String]): Unit = {
val inputPath="hdfs://master:9000/test/kmeans_data.txt"
val outputPath="hdfs://master:9000/test/result"
val sc = new SparkContext()
val texts = sc.textFile(inputPath)
println(sc.master)
val wordCounts = texts.flatMap{a => a.split(" ")}
.map(word => (word,1))
.reduceByKey(_+_)
wordCounts.saveAsTextFile(outputPath)
}
}
word-count.sbt:
name := "wordcount"
version := "1.0.0"
scalaVersion := "2.11.12"
libraryDependencies += "org.apache.spark" %% "spark-core" % "2.4.1" % "provided"
在此目录下,打包:sbt package
[root@master WordCount]# sbt package
打包完成后,jar包存放在此文件夹的/target/scala-2.11.12下
就可以spark-submit了:
[root@master ~]# spark-submit --class WordCount --master yarn-client file:///export/spark_jar/wordcount_2.11-1.0.0.jar