【问题标题】:Add custom python library path to Pyspark将自定义 python 库路径添加到 Pyspark
【发布时间】:2019-07-18 21:35:46
【问题描述】:

在我的 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 选项标签

<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']​

【问题讨论】:

    标签: python numpy pyspark oozie


    【解决方案1】:

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

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

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

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

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

    我会留意这里,如果我找到答案,我会发布它。

    【讨论】:

    猜你喜欢
    • 2013-07-30
    • 1970-01-01
    • 2023-02-10
    • 2012-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-30
    相关资源
    最近更新 更多