У меня проблема с использованием Python на Spark. Мое приложение имеет некоторые зависимости, такие как numpy, pandas, astropy и т.д. Я не могу использовать virtualenv для создания среды со всеми зависимостями, поскольку узлы в кластере не имеют общей точки монтирования или файловой системы, кроме HDFS. Поэтому я застрял с использованием spark-submit --py-files
. Я упаковываю содержимое сайтов-пакетов в ZIP файл и отправляю задание, например, с помощью параметра --py-files=dependencies.zip
(как это предлагается в разделе Самый простой способ установить зависимости Python на узлы-исполнители Spark?). Тем не менее, узлы в кластере по-прежнему не видят модули внутри, и они бросают ImportError
например, при импорте numpy.
File "/path/anonymized/module.py", line 6, in <module>
import numpy
File "/tmp/pip-build-4fjFLQ/numpy/numpy/__init__.py", line 180, in <module>
File "/tmp/pip-build-4fjFLQ/numpy/numpy/add_newdocs.py", line 13, in <module>
File "/tmp/pip-build-4fjFLQ/numpy/numpy/lib/__init__.py", line 8, in <module>
#
File "/tmp/pip-build-4fjFLQ/numpy/numpy/lib/type_check.py", line 11, in <module>
File "/tmp/pip-build-4fjFLQ/numpy/numpy/core/__init__.py", line 14, in <module>
ImportError: cannot import name multiarray
Когда я переключаюсь на virtualenv и использую локальную оболочку pyspark, все работает нормально, поэтому все зависимости есть. Кто-нибудь знает, что может вызвать эту проблему и как ее исправить?
Благодарю!