Запустите задание PySpark из .egg вместо .py - PullRequest
0 голосов
/ 09 ноября 2018

Я пытаюсь запустить задание PySpark, используя Dataproc . Единственное отличие от всех примеров в том, что я хочу отправить работу из .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

Важно отметить, что когда я пытаюсь запустить простое задание PySpark с использованием файла .py, он работает правильно.

Может кто-нибудь сказать мне, как я могу запустить задание PySpark из файла .egg вместо .py файла?

1 Ответ

0 голосов
/ 09 ноября 2018

Похоже, есть ошибка в том, что gcloud dataproc анализирует аргументы и заставляет Spark попытаться выполнить ваш файл как файл JAR Java. Обходной путь - скопируйте ваш файл __main__.py за пределы вашего файла яйца и выполните его независимо, как это.

gcloud dataproc jobs submit pyspark \
    --cluster=my-cluster-001 \
    --py-files=file:///dummyproject-1_spark-py2.7.egg \
    file:///__main__.py \
...