1.從https://www.scala-sbt.org/download.html官網上尋找所需要的安裝包 可以直接本地下載完扔進去也可以wget路徑,在這裡我用的是sbt1.2.8版本的,下載到/usr/local目錄下 2.將下載的sbt文件中的sbt-launch.jar拷貝到/usr/lo ...
1.從https://www.scala-sbt.org/download.html官網上尋找所需要的安裝包
可以直接本地下載完扔進去也可以wget路徑,在這裡我用的是sbt1.2.8版本的,下載到/usr/local目錄下
2.將下載的sbt文件中的sbt-launch.jar拷貝到/usr/local/下的sbt目錄中的一級目錄下
3.在/usr/local/sbt中創建一個sbt腳本(vim ./sbt),添加以下內容:
SBT_OPTS="-Xms512M -Xmx1536M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256M" java $SBT_OPTS -jar `dirname $0`/sbt-launch.jar "$@"

4.修改腳本許可權
chmod u+x ./sbt
5.修改依賴源(此處修改為阿裡源)
vim ~/.sbt/repositories修改內容如下:
[repositories] local aliyun-nexus: http://maven.aliyun.com/nexus/content/groups/public/ typesafe: http://repo.typesafe.com/typesafe/ivy-releases/, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext], bootOnly sonatype-oss-releases maven-central sonatype-oss-snapshots

6.定位阿裡源
進入這兩個文件,vim sbtconfig.txt和
vim sbtopts將此行代碼加入兩個文件的最後一行
-Dsbt.override.build.repos=true

7.檢驗 sbt 是否可用,耐心等待,一般需要下載好幾分鐘的,但是如果等待的時間特別長,那建議換源,前面的阿裡源就是我針對這個問題而換的,如果你是按照我前面的操作來做的話,那很快就能成功。
./sbt sbtVersion

8.接下來進行spark第一個應用程式的打包執行
1)首先進入用戶的主文件夾
cd ~
創建應用程式根目錄
mkdir sparkapp
創建所需的文件夾結構
mkdir -p ./sparkapp/src/main/scala
2)在./sparkapp/src/main/scala下建立一個SimpleApp.scala的文件
vim ./sparkapp/src/main/scala/SimpleApp.scala
內容如下:
1 /* SimpleApp.scala */ 2 import org.apache.spark.SparkContext 3 import org.apache.spark.SparkContext._ 4 import org.apache.spark.SparkConf 5 6 object SimpleApp { 7 def main(args: Array[String]) { 8 val logFile = "file:///usr/local/spark-2.4.3/README.md" 9 val conf = new SparkConf().setAppName("Simple Application") 10 val sc = new SparkContext(conf) 11 val logData = sc.textFile(logFile, 2).cache() 12 val numAs = logData.filter(line => line.contains("a")).count() 13 val numBs = logData.filter(line => line.contains("b")).count() 14 println("Lines with a: %s, Lines with b: %s".format(numAs, numBs)) 15 } 16 }該程式計算 /usr/local/spark/README 文件中包含 “a” 的行數 和包含 “b” 的行數。代碼第8行的 /usr/local/spark 為 Spark 的安裝目錄,如果不是該目錄請自行修改。不同於 Spark shell,獨立應用程式需要通過 val sc = new SparkContext(conf) 初始化 SparkContext,SparkContext 的參數 SparkConf 包含了應用程式的信息。 該程式依賴 Spark API,因此我們需要通過 sbt 進行編譯打包。 ./sparkapp 中新建文件 simple.sbt(vim ./sparkapp/simple.sbt),添加內容如下,聲明該獨立應用程式的信息以及與 Spark 的依賴關係:
name := "Simple Project" version := "1.0" scalaVersion := "2.11.12" libraryDependencies += "org.apache.spark" %% "spark-core" % "2.4.3"


3)使用 sbt 打包 Scala 程式
cd ~/sparkapp find .

/usr/local/sbt/sbt package

~/sparkapp/target/scala-2.11/simple-project_2.11-1.0.jar
4)通過spark-submit運行程式,將生成的jar包通過是spark-submit提交到spark中運行
/usr/local/spark-2.4.3/bin/spark-submit --class "SimpleApp" ~/sparkapp/target/scala-2.11/simple-project_2.11-1.0.jar上面的命令輸出的東西會特別多,所以也可以通過管道化來篩選跟輸出指定的信息
/usr/local/spark-2.4.3/bin/spark-submit --class "SimpleApp" ~/sparkapp/target/scala-2.11/simple-project_2.11-1.0.jar 2>&1 | grep "Lines with a:"
