py_spark EMRActivity в конвейерах передачи данных py_zip завершается ошибкой - PullRequest
0 голосов
/ 11 мая 2019

Я выполняю шаг py_spark, инициированный внутри EMRActivity в конвейерах данных AWS. На данный момент это не удается, так как кажется, что он не может найти модули Python, которые я добавил в zip-файл и отправил как --py_files arg.

  File "/mnt/tmp/spark-74aaab55-c838-4a7c-8e27-519d6e58fd94/my_py_job.py", line 17, in <module>
    from my_package.test import SomeClass
ModuleNotFoundError: No module named 'my_package'

Я запускаю тот же шаг на emr, запущенном вручную, и он работает без проблем. Даже команды в контроллере кажутся одинаковыми, кроме порядков параметров.

Из трубопровода:

INFO startExec 'hadoop jar /var/lib/aws/emr/step-runner/hadoop-jars/command-runner.jar spark-submit s3://bucket.tmp/test-pyspark/my_py_job.py --master yarn --deploy-mode cluster --py-files s3://bucket.tmp/test-pyspark/test.zip  --inputs s3://bucket.tmp/test-pyspark/input'

Непосредственно:

INFO startExec 'hadoop jar /var/lib/aws/emr/step-runner/hadoop-jars/command-runner.jar spark-submit --master yarn --deploy-mode cluster --py-files s3://bucket.tmp/test-pyspark/test.zip s3://bucket.tmp/test-pyspark/my_py_job.py --inputs s3://bucket.tmp/test-pyspark/input'

Я использовал argparse для разбора параметров для сценария python.

То, как я указал свой шаг EMRActivity в json:

      "step": ["command-runner.jar,spark-submit,s3://algoro.tmp/test-pyspark/my_py_job.py,--master,yarn,--deploy-mode,cluster,--py-files,s3://algoro.tmp/test-pyspark/test.zip,--inputs,s3://algoro.tmp/test-pyspark/inpuy"]

...