导入 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。
我已经下载了 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。