SBT安裝及命令行打包spark程序


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"
文件 simpale.sbt 需要指明 Spark 和 Scla 的版本。在上面的配置信息中,scalaVersion用來指定scala的版本,sparkcore用來指定spark的版本,這兩個版本信息都可以在之前的啟動 Spark shell 的過程中,從屏幕的顯示信息中找到。下面就是筆者在啟動過程當中,看到的相關版本信息(備注:屏幕顯示信息會很長,需要往回滾動屏幕仔細尋找信息)。

3)使用 sbt 打包 Scala 程序

cd ~/sparkapp
find .
接着,我們就可以通過如下代碼將整個應用程序打包成 JAR(首次運行同樣需要下載依賴包 ):
/usr/local/sbt/sbt package
生成的jar包的位置為:
~/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:"

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM