idea+maven+scala創建wordcount,打包jar並在spark on yarn上運行

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所在的位置。運行結果如圖:


發佈了30 篇原創文章 · 獲贊 25 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章