首页 > 解决方案 > 如何将图框添加到 Apache Zeppelin

问题描述

我正在尝试将 Apache Zeppelin 上的 graphframes 库与 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')函数,并尝试在解释器设置中添加图形框架作为依赖项,但是,这些尝试都没有奏效。

我还尝试将 Spark 存储库添加到 Zeppelin,然后将图形框架的 maven 坐标添加到 zeppelin 上的依赖项部分下的解释器。但是,这也不起作用。

我在 EMR 集群上托管的 zeppelin 0.8.1 上使用带有 scala 2.11 的 spark 版本 2.4。

我可以使用上面提到的 pyspark 和 --packages 指令从终端使用图形框架,所以这似乎是一个与 zeppelin 相关的问题。

我不知道我还能做什么。关于如何让图形框架在 zeppelin 上工作的任何想法?

标签: apache-sparkpysparkapache-zeppelingraphframes

解决方案


我认为问题在于 Zeppelin 中的 PYTHONPATH。您可以通过以下方式查看 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

在 zeppelin 中重新启动 spark 解释器,以确保应用所有更改。


推荐阅读