Передача параметров в задание dataproc pyspark

Как передать параметры в сценарий python, вызываемый при отправке задания pyspark dataproc? Вот cmd, с которым я связывался:

 gcloud dataproc jobs submit pyspark --cluster my-dataproc \ 
 file:///usr/test-pyspark.py \
 --properties=^:^p1="7day":p2="2017-10-01"

Это возвращаемый результат:

 Job [vvvvvvv-vvvv-vvvv-vvvv-0vvvvvv] submitted. Waiting for job output...
 Warning: Ignoring non-spark config property: p2=2017-10-01 
 Warning: Ignoring non-spark config property: p1=7day 
 Found script=/usr/test-pyspark.py 
 Traceback (most recent call last):   
   File "/usr/test-pyspark.py", line 52, in <module>
     print(sys.argv[1]) 
 IndexError: list index out of range`

Ясно, что не распознает 2 параметра, которые я пытаюсь передать. Я также попытался:

me@my-dataproc-m:~$  gcloud dataproc jobs submit pyspark --cluster=my-dataproc test-pyspark.py 7day 2017-11-01

Но это вернулось с:

ERROR: (gcloud.dataproc.jobs.submit.pyspark) unrecognized arguments:
  7day
  2017-11-01

Шаблон, который я использую для передачи параметров в заданиях улья, не работает для pyspark.

Любая помощь приветствуется!

Спасибо мелисса

2 ответа

Решение

Вторая форма близка, используйте '-', чтобы отделить аргументы вашей работы от аргументов gcloud:

$ gcloud dataproc jobs submit pyspark --cluster=my-dataproc \
    test-pyspark.py -- 7day 2017-11-01

Это сработало для меня для передачи нескольких аргументов -

Отправка заданий gcloud dataproc pyspark --cluster <имя_кластера> --region europe-west1 --properties spark.master=yarn --properties spark.submit.deployMode=client --properties spark.sql.adaptive.enabled=true --properties spark.executor.memoryOverhead=8192 --properties spark.driver.memoryOverhead=4096 .py --arg1=value1 --arg2=value2

или просто сказать -

      gcloud dataproc jobs submit pyspark --cluster <cluster_name> <name-of-the-script>.py -- --arg1=value1 --arg2=value2

Всего наилучшего !

Другие вопросы по тегам