Как передать модуль для искровой отправки, который используется в UDF - PullRequest
0 голосов
/ 14 апреля 2020

У меня есть исходный код, где UDF использует dill. У меня есть другие пакеты, используемые в моем исходном коде, и все они перечислены в файле require.txt. Поэтому я делаю следующее, но он говорит, что «модуль не найден» для «укропа»

pip install -r requirements.txt --target ./dependencies
cd dependencies
zip dependencies.zip .
cd ..

spark-submit --master yarn --jars example.jar --conf spark.executor.instances=10 --pyfiles dependencies.zip --name example_job example.py arg1 arg2

Это дает следующую ошибку:

No module named "dill"

Я вижу, что нам нужно пройти яйцо файлы явно в аргументе --pyfiles, но где взять файл яйца для укропа?

1 Ответ

0 голосов
/ 14 апреля 2020

Я сделал это сам, загрузив исходный код и сгенерировав из него файл egg

pip download dill==0.3.1.1
tar -zxvf dill-0.3.1.1.tar.gz
cd dill-0.3.1.1
python setup.py bdist_egg
cp dist/*.egg ../

Любые улучшения для вышеуказанного процесса приветствуются

...