Невозможно собрать файлы py-spark с включенным pandas - PullRequest
1 голос
/ 11 февраля 2020

Я пытаюсь упаковать свои зависимости для создаваемой мной программы 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 Ответ

0 голосов
/ 11 февраля 2020

Чтобы получить зависимость от работника, есть два способа, один из которых - это именно то, что вы сделали: заархивировать файл или простой 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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...