从.egg而不是.py运行PySpark作业

问题描述 投票:1回答:1

我正在尝试使用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作业?

pyspark google-cloud-platform google-cloud-dataproc
1个回答
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 \
© www.soinside.com 2019 - 2024. All rights reserved.