正在导入PySpark包



我已经下载了graphframes包(从这里),并将其保存在本地磁盘上。现在,我想使用它。所以,我使用以下命令:

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/目录为空。

我错过了什么?

在我的例子中:
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:.

这可能是使用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

将python代码放在graphframes目录中应该可以工作。

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

spark.executer.extraClassPath文件路径/jar1:file_path/jar2

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

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

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

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

相关内容

  • 没有找到相关文章

最新更新