Apache toree - pySpark没有加载包

时间:2017-07-06 10:03:41

标签: pyspark graphframes

我按照https://medium.com/@faizanahemad/machine-learning-with-jupyter-using-scala-spark-and-python-the-setup-62d05b0c7f56的说明安装了Apache Toree。

但是我无法通过在内核文件中使用PYTHONPATH变量来导入pySpark内核中的包:

/usr/local/share/jupyter/kernels/apache_toree_pyspark/kernel.json。

使用笔记本我可以在sys.path和os.environ ['PYTHONPATH']中看到所需的.zip,而相关的.jar是在os.environ ['SPARK_CLASSPATH']但是我得到了

使用以下命令导入时,

“没有名为graphframe的模块”:import graphframe。

有关如何导入graphframe的任何建议吗?

谢谢。

2 个答案:

答案 0 :(得分:1)

我使用的是数据框下载页面中的.zip,但它无法解决问题。可以按照以下步骤创建正确的.zip:

https://github.com/graphframes/graphframes/issues/172

另一个解决方案是:Importing PySpark packages,虽然--packages参数对我不起作用。

希望得到这个帮助。

答案 1 :(得分:0)

在Jupyter笔记本中获取像图框这样的软件包的最快方法是设置PYSPARK_SUBMIT_ARGS环境变量-这可以在正在运行的笔记本服务器中完成,如下所示:

import os
os.environ["PYSPARK_SUBMIT_ARGS"] = ("--packages graphframes:graphframes:0.7.0-spark2.4-s_2.11 pyspark-shell")

在启动SparkContext sc = pyspark.SparkContext()

之前,先验证它是否已添加。
environ{...
       'PYSPARK_SUBMIT_ARGS': '--packages graphframes:graphframes:0.7.0-spark2.4-s_2.11 pyspark-shell'}

然后您可能会在tmp中找到一个PATH目录。通过import sys; sys.path进行检查,其内容应如下所示:

[...
 '/tmp/spark-<###>//userFiles-<###>/graphframes_graphframes-0.7.0-spark2.4-s_2.11.jar',
 '/usr/local/spark/python',
 '/usr/local/spark/python/lib/py4j-0.10.7-src.zip', ...
]

这已通过jupyter/pyspark-notebook docker容器进行了测试,您还可以在构建时为其设置环境变量。使用此Dockerfile运行docker build .,以这样做:

FROM jupyter/pyspark-notebook
USER root
ENV PYSPARK_SUBMIT_ARGS --packages graphframes:graphframes:0.7.0-spark2.4-s_2.11 pyspark-shell
USER $NB_UID