Я пытаюсь запустить приложение pyspark на кластере пряжи. Приложение использует определенные библиотеки, которые требуют python3. Однако кластер пряжи использует python2 и не имеет установленного python3. Есть ли способ упаковать мое приложение pyspark с python3 и всеми основными python3 библиотеками.
Я выполнял эти шаги грубо для создания виртуальной среды
virtualenv -p /usr/bin/python3 venv/
source venv/bin/activate
pip install -r requirements.txt
venv-pack -o environment.tar.gz
/usr/bin/spark-submit --master yarn --executor-cores 1 --num-executors 15 --queue wesp_dev --deploy-mode cluster --conf "spark.driver.extraJavaOptions=-DENVIRONMENT=pt" --conf "spark.executor.extraJavaOptions=-DENVIRONMENT=pt" --name "EndpointAttackDetectionEngine" --class com.telus.endpointAttackDetectionEngine.AppMain --keytab $KEY_TAB --principal $PRINCIPAL --driver-memory=4G --archives environment.tar.gz#environment --conf spark.yarn.appMasterEnv.PYSPARK_PYTHON=./environment/bin/python --conf spark.executorEnv.LD_LIBRARY_PATH=./environment/lib/ --conf spark.yarn.appMasterEnv.LD_LIBRARY_PATH=./environment/lib/ test.py
Однако количество проблем при создании виртуальной среды, следуя шагам выше
- I заметил, что интерпретатор python в venv / bin / python имеет символическую ссылку на / usr / bin / python. Мне пришлось вручную удалить символические ссылки и просто скопировать интерпретатор python. Поскольку в кластере не было бы python3 в /usr/bin/python.
- lib python3 .6m.so.1.0. Из-за этого изначально не работало приложение Pyspark. Я вручную скопировал это в venv / lib / и указал его в
spark.executorEnv.LD_LIBRARY_PATH=./environment/lib/
и spark.yarn.appMasterEnv.LD_LIBRARY_PATH=./environment/lib/
в spark-submit - Теперь я застрял на
Fatal Python error: Py_Initialize: Unable to get the locale encoding
ModuleNotFoundError: No module named 'encodings'
при запуске приложения pysark в кластере пряжи. Я вручную скопировал кодировки и другие основные модули для python3 из /usr/lib64/python3.6, но проблему не устранил.
Все это заставляет меня поверить, что я что-то упускаю, когда упаковываю свою среду с помощью venv. Должен быть лучший способ сделать это. Я новичок в этом. Может кто-нибудь, пожалуйста, помогите.
С уважением!