我按照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的任何建议吗?
谢谢。
答案 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