运行 来自 .egg 而不是 .py 的 PySpark 作业
Run PySpark job from .egg instead of .py
我正在尝试 运行 使用 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 \
我正在尝试 运行 使用 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 \