如何将图框添加到 Apache Zeppelin

How to add graphframes to Apache Zeppelin

我正在尝试将 Apache Zeppelin 上的 graphframes 库与 Spark (pyspark) 解释器一起使用,但是,我不断收到错误消息: ModuleNotFoundError: No module named 'graphframes' 每当我尝试使用 from graphframes import *.

导入 graphframes 模块时

我尝试在 zeppelin-env.sh 文件中添加 --packages 'graphframes:graphframes:0.7.0-spark2.4-s_2.11' 指令,我尝试使用 z.load('graphframes:graphframes:0.7.0-spark2.4-s_2.11') 函数,我尝试在解释器设置中添加图形框架作为依赖项,但是,none 这些尝试都奏效了。

我还尝试将 spark 存储库添加到 Zeppelin,然后将 graphframes 的 Maven 坐标添加到依赖项部分下的 zeppelin 上的解释器。但是,这也没有用。

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

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

我不知道我还能做什么。关于如何让 graphframes 在 zeppelin 上工作有什么想法吗?

我认为问题出在 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 解释器以确保应用所有更改。