导入PySpark包

时间:2016-04-04 07:49:05

标签: pyspark graphframes

我已下载graphframes包(来自here)并将其保存在我的本地磁盘上。现在,我想用它。所以,我使用以下命令:

IPYTHON_OPTS="notebook --no-browser" pyspark --num-executors=4  --name gorelikboris_notebook_1  --py-files ~/temp/graphframes-0.1.0-spark1.5.jar --jars ~/temp/graphframes-0.1.0-spark1.5.jar --packages graphframes:graphframes:0.1.0-spark1.5

除了新的graphframes包之外,所有pyspark功能都按预期工作:每当我尝试import graphframes时,我都会获得ImportError。当我检查sys.path时,我可以看到以下两条路径:

/tmp/spark-1eXXX/userFiles-9XXX/graphframes_graphframes-0.1.0-spark1.5.jar/tmp/spark-1eXXX/userFiles-9XXX/graphframes-0.1.0-spark1.5.jar,但这些文件不存在。此外,/tmp/spark-1eXXX/userFiles-9XXX/目录为空。

我错过了什么?

4 个答案:

答案 0 :(得分:2)

在我的情况下:
1,cd /home/zh/.ivy2/jars

2,jar xf graphframes_graphframes-0.3.0-spark2.0-s_2.11.jar

3,将/home/zh/.ivy2/jar添加到spark-env.sh中的PYTHONPATH,如上面的代码:

export PYTHONPATH=$PYTHONPATH:/home/zh/.ivy2/jars:.

答案 1 :(得分:1)

这可能是一般使用Python的Spark包中的问题。其他人在Spark用户讨论别名上提前询问过这个问题。

我的解决方法是解压缩jar以找到嵌入的python代码,然后将python代码移动到名为graphframes的子目录中。

例如,我从我的主目录

运行pyspark
~$ ls -lart
drwxr-xr-x 2 user user   4096 Feb 24 19:55 graphframes

~$ ls graphframes/
__init__.pyc  examples.pyc  graphframe.pyc  tests.pyc

你不需要py文件或jar参数,比如

IPYTHON_OPTS="notebook --no-browser" pyspark --num-executors=4 --name gorelikboris_notebook_1 --packages graphframes:graphframes:0.1.0-spark1.5

并且在graphframes目录中使用python代码应该可以工作。

答案 2 :(得分:0)

将这些行添加到$ SPARK_HOME / conf / spark-defaults.conf:

spark.executor.extraClassPath file_path / jar1:file_path / jar2

spark.driver.extraClassPath file_path / jar1:file_path / jar2

答案 3 :(得分:0)

在更一般的情况下,导入' orphan' python文件(在当前文件夹之外,不是正确安装的软件包的一部分) - 使用addPyFile,例如:

sc.addPyFile('somefolder/graphframe.zip')

addPyFile(path):为将来在此SparkContext上执行的所有任务添加.py或.zip依赖项。传递的路径可以是本地文件,HDFS(或其他Hadoop支持的文件系统)中的文件,也可以是HTTP,HTTPS或FTP URI。