1、 建立基于maven的scala項目步驟
(1)建立一個maven項目
File->new project -> maven

不需要選擇archetype,直接點選Next
Next
Finish,完成建立。項目目錄如下:
(2)将scala添加到項目中
Add framework support
選擇scala,以及對應的scala-sdk,完成後點選ok!
(3)建立wordcount對象
Ok,在WordCount中編寫main方法作為程式的入口,如下:
(4)在maven的pox.xml中添加jar依賴
特别提醒:注意scala和spark的版本要相符合,否則運作會報錯,下圖用的是scala-2.10.4和spark-1.6.3。
(5)編寫wordcount代碼
(6)運作(快捷鍵:crtl+shift+f10)
(7)打包jar
上圖中删除多餘的jar一定要做,否則在spark叢集中運作時會報錯。
Ok!
生成的jar如圖。
(8)在spark on yarn叢集上運作
使用spark-submit部署應用
1) spark-submit的一般形式
bin/spark-submit [options] <app jar | python file> [app options]
<app jar | python file>表示包含應用入口的JAR包或者Python腳本
[app options]是傳給你的應用的選項
spark-submit的一些常見标記
标記 描述
--master 表示要連接配接的叢集管理器
--deploy-mode 選擇在本地啟動驅動器程式,還是在叢集中的一台工作節點機器上啟動。在用戶端模式下,spark-submit會将驅動器程式運作在spark-submit被調用的這台機器上。在叢集模式下,驅動器程式會被傳輸并被執行于叢集的一個工作節點上,預設是本地模式。
--class 運作Java或者Scala程式應用的主類
--name 應用的顯示名,會顯示在spark的網頁使用者界面中
--jars 需要上傳并放在應用的CLASSPATH中的JAR包的雷彪。如果應用依賴于少量第三方的jar包,可以把它們放在這個參數中
--files 需要放在應用工作目錄中的檔案雷彪。這個參數一般用來放需要分發到各節點的資料檔案
--py-files 需添加到PYTHONPATH中的檔案的雷彪。其中可以包含.py /.egg以及.zip檔案
--executor-memory 執行器程序使用的記憶體量,以位元組為機關,可以使用字尾指定更大的機關,比如512M或者15g
--driver-memory 驅動器程序使用的記憶體量,以位元組為機關。可以使用字尾指定更大的機關,比如512m或者15g
./bin/spark-submit
--master spark:// hostname:7077
--deploy-mode cluster
--class com.databricks.examples.SparkExample
--name "Example program"
--jars dep1.jar,dep2.jar,dep3.jar
--total-executor-core 300
--executor-memory 10g
2) WordCount運作示例
說明:java檔案夾已經mark as sources root了,是以在打包成jar的包運作過程中寫main方法所在的類時直接從java目錄下開始寫即可。
運作指令行:
最後兩個為jar包所在位置和輸入檔案在HDFS上的路徑。注意spark-submit所在的位置。運作結果如圖: