Apache toree - pySpark 不加载包

Apache toree - pySpark not loading packages

我按照 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'] 但我得到

导入时出现“No module named graphframe”:import graphframe。

关于如何导入 graphframe 有什么建议吗?

谢谢。

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

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

虽然 --packages 参数对我不起作用,但在 处给出了另一个解决方案。

希望对您有所帮助。

在 Jupyter notebook 中获取像 graphframes 这样的包的最快方法是设置 PYSPARK_SUBMIT_ARGS 环境变量——这可以在 运行 notebook 服务器中完成,如下所示:

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'}

您可能会在 PATH 中找到一个 tmp 目录。检查 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 容器测试的,您还可以在构建时为其设置环境变量。 运行 docker build . 使用此 Dockerfile 来执行此操作:

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