将自定义python库路径添加到Pyspark

时间:2019-02-25 13:06:58

标签: python numpy pyspark oozie

在我的hadoop集群中,他们在python默认路径以外的其他路径中安装了anaconda软件包。当我尝试在pyspark中访问numpy时出现错误消息

  

ImportError:没有名为numpy的模块

我正在使用oozie调用pyspark。

我尝试通过以下方法提供此自定义python库路径

使用oozie标签

<property>
  <name>oozie.launcher.mapreduce.map.env</name>
  <value>PYSPARK_PYTHON=/var/opt/teradata/anaconda2/bin/python2.7</value>
</property>

使用火花选项标签

<spark-opts>spark.yarn.appMasterEnv.PYSPARK_PYTHON=/var/opt/teradata/anaconda2/bin/python2.7 --conf spark.yarn.appMasterEnv.PYSPARK_DRIVER_PYTHON=/var/opt/teradata/anaconda2/bin/python2.7 --conf spark.pyspark.python=/var/opt/teradata/anaconda2/bin/python2.7 --conf spark.pyspark.driver.python=/var/opt/teradata/anaconda2/bin/python2.7</spark-opts>

没有任何效果。

当我运行普通的python脚本时,它工作正常。问题正在传递给pyspark

即使我在pyspark标头中也给出了

#! /usr/bin/env /var/opt/teradata/anaconda2/bin/python2.7

当我在pyspark代码中打印sys.path时,它仍然在默认路径下显示

​[ '/usr/lib/python27.zip', '/usr/lib64/python2.7', '/usr/lib64/python2.7/plat-linux2', '/usr/lib64/python2.7/lib-tk', '/usr/lib64/python2.7/lib-old', '/usr/lib64/python2.7/lib-dynload', '/usr/lib64/python2.7/site-packages', '/usr/local/lib64/python2.7/site-packages', '/usr/local/lib/python2.7/site-packages', '/usr/lib/python2.7/site-packages']​

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。就我而言,似乎ml类(例如Vector)正在幕后调用numpy,但没有在标准安装位置中寻找它。即使在群集的所有节点上都安装了numpy的Python2和Python3版本,PySpark仍在抱怨找不到它。

我尝试了很多没有用的建议。

有人建议我没有尝试过的两件事:

1)将bashrc用于PySpark运行的用户(对我来说是ubuntu)来设置首选的python路径。在所有节点上执行此操作。

2)让PySpark脚本尝试将有问题的模块作为其功能的一部分进行安装(例如,通过脱壳到pip / pip3)。

我会留在这里,如果找到答案,我会张贴它。