Spark 的編譯環境建立
基於 SBT 的 Scala 編譯環境
為了要撰寫 Spark 程式,我們要先建立 Spark 的編譯環境。此時,就要用到 SBT這個套件,SBT (Simple Build Tool) 是 Scala 的編譯器,有興趣可以參考: https://www.scala-sbt.org/
在進行編譯前,我們需要創一個專案 (project),重新執行之前範例中的 SparkPi。以下編譯環境的步驟,主要參考以下連結: https://console.bluemix.net/docs/services/AnalyticsforApacheSpark/spark_app_example.html 因為有一些修改,就把指令紀錄如下:
一開始,先建立專案的資料夾,把 SparkPi 移入:
mkdir -p ~/spark-submit/project
mkdir -p ~/spark-submit/src/main/scala
cp /usr/lib/spark/examples/src/main/scala/org/apache/spark/examples/SparkPi.scala ~/spark-submit/src/main/scala/SparkPi.scala接著, 設定SBT的環境:
vim ~/spark-submit/build.sbt貼上以下內容 (Scala的版本號記得修改)
name := "SparkPi"
version := "1.0"
scalaVersion := "2.11.6"
libraryDependencies += "org.apache.spark" %% "spark-core" % "2.1.2"
libraryDependencies += "org.apache.spark" %% "spark-sql" % "2.1.2"
resolvers += "Akka Repository" at "http://repo.akka.io/releases/"輸入 SBT 對應的版本號 (請自行對應):
vim ~/spark-submit/project/build.properties輸入 sbt.version=1.2.6
完成後就可以以下三行指令進行編譯 (compile)、執行 (run) 以及封裝 (package),如果是第一次編譯會下載很多關聯檔案 (dependency),要花不少時間等待。
關於SBT編譯的說明可以參考這一篇文章:
https://alvinalexander.com/scala/sbt-how-to-compile-run-package-scala-project
該篇文章以 Scala 為例,比較容易了解 SBT 和 Scala 之間的關係,編譯好的 Jar檔案在 ~/spark-submit/target/scala-2.11/sparkpi_2.11-1.0.jar
接著, 只要執行Jar檔就可以了,指令如下:
在執行 spark-submit 時,可以給予不同參數,請參考:
https://console.bluemix.net/docs/services/AnalyticsforApacheSpark/spark_submit_example.html#example-running-a-spark-application-with-optional-parameters
如果在執行時出現以下錯誤:
"ERROR SparkContext: Error initializing SparkContext.
org.apache.spark.SparkException: A master URL must be set in your configuration"
是因為在原本宣告中,不帶有本機執行的資訊。請修改原始程式的這個部分,並重新執行:
執行結果顯示如下 (省略部分資訊):
Last updated
Was this helpful?