在HD Insight上使用带有Jupyter Notebook的Spark包

时间:2016-12-12 09:35:57

标签: apache-spark pyspark jupyter-notebook hdinsight

我正在尝试通过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的模块不存在的错误。有没有办法在更改此env变量后启动新的SparkContext?

我也尝试通过%set_env magic命令将PYSPARK_SUBMIT_ARGS变量传递给IPython然后导入graphframes:

%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 个答案:

答案 0 :(得分:1)

事实证明我有两个不同的问题:

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是Microsoft的相关文档。

2)根据this有用的答案,Spark似乎有一个错误导致它错过了包的jar。这对我有用:

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