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

标签 pyspark google-cloud-platform google-cloud-dataproc

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

我收到的错误是:

Error: Cannot load main class from JAR file:/dummyproject-1_spark-py2.7.egg

值得一提的是,当我尝试使用 .py 文件运行简单的 PySpark 作业时,它工作正常。

有人可以告诉我,如何从 .egg 文件而不是 .py 文件运行 PySpark 作业?

最佳答案

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

关于pyspark - 从 .egg 而不是 .py 运行 PySpark 作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53219401/

相关文章:

python - 如何在Python中的Google Cloud Function中运行子流程

javascript - 我的 Firebase 云函数因 Object.value is not a function 错误而失败?

hadoop - Google Cloud Platform上的预定mapreduce作业

hadoop - GCP Dataproc 集群上的工作流调度

excel - inferSchema using spark.read.format ("com.crealytics.spark.excel")正在为日期类型列推断 double

apache-spark - pyspark 如何加载压缩的 snappy 文件

pyspark - 按年份透视并获得 2020 年的金额总和

hadoop - Pyspark:将数据帧保存到 hadoop 或 hdfs 而不会溢出内存?

google-cloud-platform - 如何从谷歌云功能调用谷歌数据处理工作

pyspark - Dataproc 上的 Spark 流数据管道遇到突然频繁的套接字超时