Я выполняю шаг 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"]