我正在尝试使用Dataproc运行PySpark作业。与所有示例相比,唯一不同的是我要从 .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加载主类 文件:/dummyproject-1_spark-py2.7.egg
重要的是要提到,当我尝试使用.py文件运行一个简单的PySpark作业时,它可以正常工作。
有人可以告诉我,如何从.egg文件而不是.py文件运行PySpark作业?
答案 0 :(得分:3)
在gcloud dataproc
如何解析参数并使Spark尝试像Java JAR文件那样执行文件方面,似乎存在一个错误。一种解决方法是将__main__.py
文件复制到egg文件之外,并像这样独立执行。
gcloud dataproc jobs submit pyspark \
--cluster=my-cluster-001 \
--py-files=file:///dummyproject-1_spark-py2.7.egg \
file:///__main__.py \