Как добавить графические кадры в Apache Zeppelin

Я пытаюсь использовать библиотеку графических кадров в Apache Zeppelin с интерпретатором Spark (pyspark), однако я продолжаю получать сообщение об ошибке: ModuleNotFoundError: No module named 'graphframes' всякий раз, когда я пытаюсь импортировать модуль графических кадров с помощью from graphframes import *.

Я пытался добавить директиву --packages 'graphframes:graphframes:0.7.0-spark2.4-s_2.11' в файл zeppelin-env.sh, пробовал использовать функцию z.load('graphframes:graphframes:0.7.0-spark2.4-s_2.11') и пробовал добавлять графические кадры в качестве зависимости в настройках интерпретатора, однако ни одна из этих попыток не сработала.

Я также попытался добавить искровой репозиторий в Zeppelin, а затем добавить координаты maven для графических фреймов в интерпретатор на цеппелине в разделе зависимостей. Однако и это не сработало.

Я использую spark версии 2.4 со scala 2.11 на zeppelin 0.8.1, размещенном в кластере EMR.

Я могу использовать графические кадры из терминала с помощью pyspark и директивы --packages, упомянутой выше, так что это похоже на проблему, связанную с цеппелином.

Я в тупике относительно того, что я мог бы сделать дальше. Любые идеи о том, как я могу заставить графические кадры работать на цеппелине?


person Marxley    schedule 01.06.2019    source источник
comment
@user10958683 user10958683 Проблема, стоящая за этой проблемой, отличалась от вопроса, указанного в ссылке. Были попытки ответить на этот вопрос, но безрезультатно. Ответ на этот вопрос может помочь тем, кто сталкивается с подобной проблемой.   -  person Marxley    schedule 04.06.2019


Ответы (1)


Я думаю, что проблема в вашем PYTHONPATH в Zeppelin. Вы можете увидеть PYTHONPATH с помощью:

import sys
print(sys.path)

Он работает с консолью pyspark, потому что пакет будет установлен в месте, которое уже является частью PYTHONPATH. Вы можете проверить это с помощью:

import graphframes
print(graphframes.__file__)

Так что все, что вам нужно сделать, это добавить пакет в ваш PYTHONPATH. Добавьте следующую строку в /etc/spark/conf/spark-defaults.conf (другие способы, такие как параметр --packages в качестве SPARK_SUBMIT_OPTIONS, также должны работать):

spark.jars.packages graphframes:graphframes:0.7.0-spark2.4-s_2.11

После этого вы должны добавить в /etc/spark/conf/spark-env.sh следующую строку для расширения вашего PYTHONPATH (проверьте расположение пакета): export PYTHONPATH=$PYTHONPATH:/var/lib/zeppelin/.ivy2/jars/graphframes_graphframes-0.7.0-spark2.4-s_2.11.jar

Перезапустите интерпретатор spark в zeppelin, чтобы убедиться, что все изменения применены.

person cronoik    schedule 03.06.2019
comment
Это решило проблему. Отмечено как ответ. Большое спасибо. Сам бы я никогда не смог прийти к этому решению. - person Marxley; 04.06.2019