2016-04-04 56 views
2

我已经下载了graphframes包(从here)并将其保存到本地磁盘上。现在,我想使用它。所以,我用下面的命令:导入PySpark包

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 

所有pyspark功能正常工作,除了新graphframes包:每当我试图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/目录是空的。

我错过了什么?

回答

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-文件或罐子参数,不过,像

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

,并具有蟒蛇代码在graphframes目录应该工作。

0

这些行添加到您的$ SPARK_HOME/conf目录/火花defaults.conf:

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

spark.driver.extraClassPath FILE_PATH/jar1:FILE_PATH /在我的情况jar2

0


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以上添加到PYTHONPATH在spark-env.sh类似的代码:

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

在更一般的情况下,导入“孤儿” Python文件(当前文件夹以外的,未正确安装软件包的一部分) - 使用addPyFile,如:

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

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