spark-submit提交python腳本過程記錄


        最近剛學習spark,用spark-submit命令提交一個python腳本,一開始老報錯,所以打算好好整理一下用spark-submit命令提交python腳本的過程。先看一下spark-submit的可選參數

1.spark-submit參數

--master MASTER_URL:設置集群的主URL,用於決定任務提交到何處執行。常見的選項有

             local:提交到本地服務器執行,並分配單個線程

             local[k]:提交到本地服務器執行,並分配k個線程

             spark://HOST:PORT:提交到standalone模式部署的spark集群中,並指定主節點的IP與端口

             mesos://HOST:PORT:提交到mesos模式部署的集群中,並指定主節點的IP與端口

             yarn:提交到yarn模式部署的集群中

--deploy-mode DEPLOY_MODE:設置driver啟動的未知,可選項如下,默認為client

             client:在客戶端上啟動driver,這樣邏輯運算在client上執行,任務執行在cluster上

             cluster:邏輯運算與任務執行均在cluster上,cluster模式暫時不支持於Mesos集群或Python應用程序

--class CLASS_NAME :指定應用程序的類入口,即主類,僅針對java、scala程序,不作用於python程序

--name NAME :應用程序的名稱

--jars JARS:用逗號隔開的driver本地jar包列表以及executor類路徑,將程序代碼及依賴資源打包成jar包

--packages:包含在driver 和executor 的 classpath 中的 jar 的 maven 坐標

--exclude-packages:為了避免沖突 ,指定的參數--package中不包含的jars包

--repository:附加的遠程資源庫(包含jars包)等,可以通過maven坐標進行搜索

--py-files PY_FILES:逗號隔開的的.zip、.egg、.py文件,這些文件會放置在PYTHONPATH下,該參數僅針對python應用程序

--files FILES:逗號隔開的文件列表,這些文件將存放於每一個工作節點進程目錄下

--conf PROP=VALUE:指定spark配置屬性的值,格式為PROP=VALUE, 例如 -conf spark.executor.extraJavaOptions="-XX:MaxPermSize=256m"

--properties-file FILE:指定需要額外加載的配置文件,用逗號分隔,如果不指定,默認為 conf/spark-defaults.conf

--driver-memory MEM :配置driver內存,默認為1G

--driver-java-options:傳遞給driver的額外選項

--driver-library-path:傳遞給driver的額外的庫路徑

--driver-class-path:傳遞給driver 的額外的類路徑,用--jars 添加的jar包會自動包含在類路徑里

--executor-memory MEM :每個 executor 的內存,默認是1G

當'--master'參數設置為Standalone,‘--deploy-mode’參數設置為cluster時,如下選項可以設置:

  --driver-cores NUM:driver使用的內核數,默認為1

當'--master'參數設置為Standalone或者Mesos,‘--deploy-mode’參數設置為cluster時,如下選項可以設置:

  --supervise:如果設置了該參數,driver失敗是會重啟

  --kill SUBMISSION_ID:如果設置了該參數,則會殺死指定SUBMISSION_ID的driver進程

  --status SUBMISSION_ID:如果設置了該參數,則請求返回指定SUBMISSION_ID的driver的狀態

當'--master'參數設置為Standalone或者Mesos時,如下選項可以設置:

   --total-executor-cores NUM:設置集群中所有工作節點上executor使用的內核總數

當'--master'參數設置為Standalone或者YARN時,如下選項可以設置:

  --executor-cores NUM:每個executor使用的核數

當'--master'參數設置為YARN時,如下選項可以設置:

   --driver-cores NUM :當--deploy-mode為cluster時,driver使用的內核數,默認為1

   --queue QUEUE_NAME :將任務提交給哪個YARN隊列,默認為YARN的默認隊列

  --num-executors NUM:設置啟動的executor數量,默認為2

  --archives ARCHIVES :被每個executor提取到工作目錄的檔案列表,用逗號隔開

2.提交python腳本

在提交firstApp.py腳本時,使用如下指令

$ spark-submit \
--master local[2] \
--num-executors 2 \
--executor-memory 1G \
--py-files /home/hadoop/Download/test/firstApp.py

結果報如下錯誤“Error: Cannot load main class from JAR file:/home/hadoop/Download/spark-2.1.1-bin-hadoop2.7/bin/master”,其中:/home/hadoop/Download/spark-2.1.1-bin-hadoop2.7/bin/master與hadoop安裝路徑相關,雖然python腳本沒有主類這一說,但是可以猜測到該錯誤是由於找不到函數入口導致,我在這里找打了一些答案,--py-fiels參數是用來添加應用程序所依賴的python文件的,我們要提交的應用程序可以直接采用如下方式提交,這樣就沒有報錯了

$ spark-submit \
--master local[2] \
--num-executors 2 \
--executor-memory 1G \
 /home/hadoop/Download/test/firstApp.py

 


免責聲明!

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



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