在 HD Insight 上将 Spark 包与 Jupyter Notebook 结合使用

Using Spark packages with Jupyter Notebook on HD Insight

我正在尝试通过 Jupyter 笔记本在 PySpark 上使用 graphFrames。我的 Spark 集群在 HD Insight 上,所以我无权编辑 kernel.json.

[此处][1] 和 [此处][2] 建议的解决方案无效。这就是我尝试 运行:

import os
packages = "graphframes:graphframes:0.3.0-spark2.0" # -s_2.11
os.environ["PYSPARK_SUBMIT_ARGS"] = (
    "--packages {0} pyspark-shell".format(packages)
)
from graphframes import *

这导致名为 graphframes 的模块不存在的错误。有没有办法在更改此环境变量后启动新的 SparkContext?

我还尝试通过 %set_env 魔术命令将 PYSPARK_SUBMIT_ARGS 变量传递给 IPython,然后导入图形框架:

%set_env PYSPARK_SUBMIT_ARGS='--packages graphframes:graphframes:0.3.0-spark2.0-s_2.11 pyspark-shell'

from graphframes import *

但这导致了同样的错误。

我看到了一些将 jar 传递给 IPython 的建议,但我不确定如何将所需的 jar 下载到我的 HD Insight 集群。

你有什么建议吗?

原来我有两个不同的问题:

1) 我使用了错误的语法来配置笔记本。你应该使用:

# For HDInsight 3.3 and HDInsight 3.4
%%configure 
{ "packages":["com.databricks:spark-csv_2.10:1.4.0"] }

# For HDInsight 3.5
%%configure 
{ "conf": {"spark.jars.packages": "com.databricks:spark-csv_2.10:1.4.0" }}

Here 是微软的相关文档。

2) 根据 有用的答案,Spark 中似乎存在导致它错过包的jar 的错误。这对我有用:

sc.addPyFile(os.path.expanduser('./graphframes_graphframes-0.3.0-spark2.0-s_2.11.jar'))