我正在尝试使用PySpark运行一个Dataproc作业。与所有示例相比,唯一不同的是,我希望提交来自.egg的工作,而不是.py文件。
为了在常规商品集群中提交PySpark作业,如下所示:
spark2-submit --master yarn \
--driver-memory 20g \
--deploy-mode client \
--conf parquet.compression=SNAPPY \
--jars spark-avro_2.11-3.2.0.jar \
--py-files dummyproject-1_spark-py2.7.egg \
dummyproject-1_spark-py2.7.egg#__main__.py "param1" "param2"现在,我想提交完全相同的作业,但使用Dataproc。为了实现这一点,我使用以下命令:
gcloud dataproc jobs submit pyspark \
file:///dummyproject-1_spark-py2.7.egg#__main__.py \
--cluster=my-cluster-001 \
--py-files=file:///dummyproject-1_spark-py2.7.egg我得到的错误是:
错误:无法从JAR文件中加载主类:/dumyProject-1_Spark-py2.7鸡蛋
值得一提的是,当我尝试使用PySpark文件运行一个简单的.py作业时,它是正确工作的。
有人能告诉我,如何从PySpark文件而不是.py文件运行.egg作业?
发布于 2018-11-09 14:53:20
看起来,在gcloud dataproc解析参数并使Spark试图像Java文件一样执行您的文件方面存在一个bug。解决方法是将__main__.py文件复制到鸡蛋文件之外,然后像这样独立执行它。
gcloud dataproc jobs submit pyspark \
--cluster=my-cluster-001 \
--py-files=file:///dummyproject-1_spark-py2.7.egg \
file:///__main__.py \https://stackoverflow.com/questions/53219401
复制相似问题