只是在spark-submit周围闲逛,我的印象是,如果我的应用程序依赖于其他.py文件,那么我必须使用py-files选项来分发它们(参见捆绑应用程序依赖项)。我认为这意味着任何文件都必须使用py-files声明,但下面的工作很好……两个.py
文件:
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
:
from pyspark import SparkContext, SparkConf
from spark_submit_test_lib import do_sum
conf = SparkConf().setAppName('JT_test')
sc = SparkContext(conf=conf)
print do_sum(sc)
提交使用:
spark-submit --queue 'myqueue' spark_submit_test.py
一切正常。代码运行,产生正确的结果,spark-submit优雅地终止。
然而,如果我已经阅读了文档,我就会认为我必须这样做:
spark-submit --queue 'myqueue' --py-files spark_submit_test_lib.py spark_submit_test.py
当然仍然有效。我只是想知道为什么前者也能起作用。有什么建议吗?
您必须在驱动程序和执行程序在同一台机器上运行的本地环境中提交此文件,这就是它工作的原因,但如果您部署在集群中并尝试从那里运行,则必须使用——pf-files选项。
请点击链接查看更多详情