【问题标题】:Run PySpark job from .egg instead of .py从 .egg 而不是 .py 运行 PySpark 作业
【发布时间】:2018-11-09 03:22:55
【问题描述】:

我正在尝试使用 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】:

    看起来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 \
    

    【讨论】:

    • 是否可以仅使用 .egg 文件进行 spark-submit?没有 .py 文件?
    猜你喜欢
    • 1970-01-01
    • 2018-12-24
    • 2021-11-13
    • 2017-09-30
    • 1970-01-01
    • 1970-01-01
    • 2020-06-16
    • 2022-12-16
    • 2010-09-14
    相关资源
    最近更新 更多