我已下载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/
目录为空。
我错过了什么?
答案 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。