导入 PySpark 包

Importing PySpark packages

我已经下载了 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/目录是空的。

我错过了什么?

通常,这可能是 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-files 或 jars 参数,例如

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

并且在 graphframes 目录中包含 python 代码应该可以。

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

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

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

就我而言:
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:.

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

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

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