apache-spark - 如何将图框添加到 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 上工作的任何想法?
解决方案
我认为问题在于 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 解释器,以确保应用所有更改。
推荐阅读
- typescript - TSLint 为空格应用多个规则
- amazon-s3 - 圣杯 on_s3_event 触发器似乎不起作用
- python - 如何获取从 gmail python 收到的电子邮件?
- swift - 使用 Swift 在 NSView 中使用图层时如何绘制文本
- html - 如何使用 CSS 在导航栏上显示图像?
- angular - 安装 ngx 引导程序后现有样式被破坏
- angular - 无法解析 DataService 的所有参数中的错误
- acumatica - 如何在自然键中包含破折号(-)字符
- excel - 如何正确使用 oleobjects 和记录集?
- go - Sec-Websocket-Protocol issues