我正在尝试通过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群集。
你有什么建议吗?
答案 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'))