2016-10-03 57 views
0

只是圍繞spark-submit,我的印象是,如果我的應用程序依賴於其他.py文件,那麼我必須使用py-files選項來分發它們(請參閱bundling your applications dependencies)。我把那意味着所有文件必須用py-文件尚未以下罰款作品...兩個.py文件中聲明:在什麼情況下我必須使用spark-submit的py-files選項?

spark_submit_test_lib.py

def do_sum(sc) : 
    data = [1, 2, 3, 4, 5] 
    distData = sc.parallelize(data) 
    return distData.sum() 

spark_submit_test.py

​​3210

提交使用:

spark-submit --queue 'myqueue' spark_submit_test.py 

所有w沒問題。代碼運行,產生正確的結果,spark-submit優雅地終止。
不過,我還以爲看了,我將不得不這樣做的文檔:

spark-submit --queue 'myqueue' --py-files spark_submit_test_lib.py spark_submit_test.py 

這仍然工作,當然。我只是想知道爲什麼前者工作得很好。有什麼建議麼?

+0

謝謝@ cricket_007的編輯。非常有用的一個。 – jamiet

回答

1

您必須在驅動程序和執行程序在同一臺計算機上運行的本地環境中提交此操作,這是其工作原因,但是如果您在羣集中部署並嘗試從此處運行,則必須使用--pf - 文件選項。

請檢查link瞭解更多詳情

+0

謝謝@ arunakiran-nulu。實際上,我沒有明確指定部署模式,因此一旦應用程序正在運行,是否可以通過編程方式確定部署模式?我添加了 print'spark.master:{0}'。format(sc._conf.get(「spark.master」)) print'spark.submit.deployMode:{0}'。format(sc._conf獲得(「spark.submit.deployMode」)) 這將產生: spark.master:紗客戶端 spark.submit.deployMode:客戶 是'client'部署模式相同,你所謂的地方? – jamiet

+0

你可以檢查所有這些在火花UI,環境選項卡,如果你在本地運行的URL是http:// localhost:4040/environment/ –

+0

想通了,謝謝Arunikiran。 'spark-submit --queue'myqueue'--py-files spark_submit_test_lib.py --deploy-mode cluster --master yarn spark_submit_test.py' – jamiet

相關問題