Импорт пакетов 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.