Невозможно собрать спайк-пи-файлы с включенными пандами

Я пытаюсь упаковать свои зависимости для создаваемой мной программы Spark. У меня есть файл require.txt, как показано ниже

pandas

Я тогда бегу

pip3 install -t dependencies -r requirements.txt
cd dependencies
zip -r ../dependencies.zip .
pyspark --py-files dependencies.zip

И запустить линию -

import pandas

И я получаю ошибку -

Traceback (most recent call last):
  File "/mnt/tmp/spark-REDACTED/userFiles-REDACTED/dependencies.zip/pandas/__init__.py", line 31, in <module>
  File "/mnt/tmp/spark-REDACTED/userFiles-REDACTED/dependencies.zip/pandas/_libs/__init__.py", line 3, in <module>
  File "/mnt/tmp/spark-REDACTED/userFiles-REDACTED/dependencies.zip/pandas/_libs/tslibs/__init__.py", line 3, in <module>
ModuleNotFoundError: No module named 'pandas._libs.tslibs.conversion'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/mnt/tmp/spark-REDACTED/userFiles-REDACTED/dependencies.zip/pandas/__init__.py", line 36, in <module>
ImportError: C extension: No module named 'pandas._libs.tslibs.conversion' not built. If you want to import pandas from the source directory, you may need to run 'python setup.py build_ext --inplace --force' to build the C extensions first.

Любые идеи о том, как это исправить?

Всего 1 ответ


Чтобы получить зависимость от работника, есть два способа: один - это именно то, что вы сделали: заархивировать файл или простой py-файл, затем использовать --py-file. Проблема, с которой вы столкнулись, из-за отсутствия зависимости C на рабочей стороне. Pkg, как NumPy / pandas, все имеют зависимость c.

Чтобы решить эту проблему, создайте virtualenv и заархивируйте virtualenv, включая исполняемый файл python

PYSPARK_DRIVER_PYTHON = <path to current working python>
PYSPARK_PYTHON = './venv/<path to python executable>'
pyspark --archives = <path to zip file>#venv

или перейдите по этой ссылке


Есть идеи?

10000