安装
解压
将sbt-1.6.1.tgz上传到xshell,并解压
解压:
tar -zxvf sbt-1.6.1.tgz
配置
1、在/home/ZQ/sbt中创建sbt脚本
cd sbt
vim ./sbt
在脚本中添加如下内容:
#!/bin/bash
SBT_OPTS="-Xms512M -Xmx1536M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256M"
java $SBT_OPTS -jar /home/ZQ/sbt/bin/sbt-launch.jar "$@"
2、为sbt脚本文件增加可执行权限
chmod u+x ./sbt
3、运行如下命令,检查sbt是否可用(查看sbt的版本信息)
./sbt sbtVersion
sbt的运用
1、创建存放代码的目录
mkdir -p sparkapp/src/main/scala/
2、编写代码
vim sparkapp/src/main/scala/test1.scala
在test1.scala文件中增加如下内容
object HelloWorld{
def main(args:Array[String]){
println("hello world!");
}
}
3、进入sparkapp目录编写sbt程序
cd sparkapp/
vim simple.sbt
在simple.sbt中添加如下内容:
name := "Simple Project"
version := "1.6.1"
scalaVersion := "2.12.10"
libraryDependencies += "org.apache.spark" %% "spark-core" % "3.1.1"
4、打包scala程序(必须在sbt/sparkapp这个路径下操作)
cd sbt/sparkapp/
/home/ZQ/sbt/sbt package
(打包生成的jar包在sbt/sparkapp/target/scala-2.12/simple-project_2.12-1.6.1.jar)
5、通过spark-submit运行程序
/home/ZQ/spark-3.1.1-bin-hadoop2.7/bin/spark-submit --class "HelloWorld" ./target/scala-2.12/simple-project_2.12-1.6.1.jar
复杂代码的实现
1、创建一个代码文件Combine.scala
cd sbt/sparkapp/src/main/scala/
vim Combine.scala
在文件中增加如下内容:
import org.apache.spark.SparkContext
import org.apache.spark.SparkConf
object Combine{
def main(args:Array[String]){
val conf=new SparkConf().setAppName("Combine").setMaster("local")
val sc=new SparkContext(conf)
val data=sc.parallelize(Array(("company-1",88),("company-1",96),("company-1",85),("company-2",94),("company-2",86),("company-2",74),("company-3",86),("company-3",88),("company-3",92)),3)
val res=data.combineByKey((income)=>(income,1),(acc:(Int,Int),income)=>(acc._1+income,acc._2+1),(acc1:(Int,Int),acc2:(Int,Int))=>(acc1._1+acc2._1,acc1._2+acc2._2)).map({case (key,value)=>(key,value._1,value._1/value._2.toFloat)})
res.repartition(1).saveAsTextFile("file:/home/ZQ/sbt/sparkapp/result/rdd/result1")
}
}
2、在sbt中编译打包(必须在cd sbt/sparkapp目录下)
cd
cd sbt/sparkapp
/home/ZQ/sbt/sbt package
3、使用spark-submit命令提交运行(必须在cd sbt/sparkapp目录下)
/home/ZQ/spark-3.1.1-bin-hadoop2.7/bin/spark-submit --class "Combine" ./target/scala-2.12/simple-project_2.12-1.6.1.jar
4、运行后查看结果
cd result/rdd/result1/
vim part-00000
结果: