Импорт пакетов PySpark

Я скачал graphframes пакет ( отсюда) и сохранил его на моем локальном диске. Теперь я хотел бы использовать это. Итак, я использую следующую команду:

IPYTHON_OPTS="notebook --no-browser" pyspark --num-executors=4  --name gorelikboris_notebook_1  --py-files ~/temp/graphframes-0.1.0-spark1.5.jar --jars ~/temp/graphframes-0.1.0-spark1.5.jar --packages graphframes:graphframes:0.1.0-spark1.5

Все функции pyspark работают, как и ожидалось, за исключением нового graphframes пакет: всякий раз, когда я пытаюсь import graphframesЯ получаю ImportError, Когда я проверяю sys.pathЯ вижу следующие два пути:

/tmp/spark-1eXXX/userFiles-9XXX/graphframes_graphframes-0.1.0-spark1.5.jar а также /tmp/spark-1eXXX/userFiles-9XXX/graphframes-0.1.0-spark1.5.jarОднако эти файлы не существуют. Кроме того, /tmp/spark-1eXXX/userFiles-9XXX/ каталог пуст.

Что мне не хватает?

4 ответа

Решение

Это может быть проблемой в пакетах Spark с Python в целом. Кто-то еще раньше спрашивал об этом в псевдониме обсуждения пользователей Spark.

Мой обходной путь - распаковать jar, чтобы найти встроенный код python, а затем переместить код python в подкаталог с именем graphframes,

Например, я запускаю pyspark из моего домашнего каталога

~$ ls -lart
drwxr-xr-x 2 user user   4096 Feb 24 19:55 graphframes

~$ ls graphframes/
__init__.pyc  examples.pyc  graphframe.pyc  tests.pyc

Вам не понадобятся параметры py-files или jars, что-то вроде

IPYTHON_OPTS="notebook --no-browser" pyspark --num-executors=4 --name gorelikboris_notebook_1 --packages graphframes:graphframes:0.1.0-spark1.5

и наличие кода Python в каталоге graphframes должно работать.

В моем случае:
1,cd /home/zh/.ivy2/jars

2,jar xf graphframes_graphframes-0.3.0-spark2.0-s_2.11.jar

3、 добавьте /home/zh/.ivy2/jar в PYTHONPATH в spark-env.sh, как показано выше:

export PYTHONPATH=$PYTHONPATH:/home/zh/.ivy2/jars:.

Добавьте эти строки в ваш $ SPARK_HOME / conf / spark-defaults.conf:

spark.executor.extraClassPath file_path / jar1: file_path / jar2

spark.driver.extraClassPath file_path / jar1: file_path / jar2

В более общем случае импорта "несвязанного" файла Python (вне текущей папки, не входит в правильно установленный пакет) - используйте addPyFile, например:

sc.addPyFile('somefolder/graphframe.zip')

addPyFile (путь): добавьте зависимость.py или.zip для всех задач, которые будут выполняться в этом SparkContext в будущем. Переданный путь может быть либо локальным файлом, файлом в HDFS (или другими файловыми системами, поддерживаемыми Hadoop), либо URI HTTP, HTTPS или FTP.

Другие вопросы по тегам