【问题标题】:No module named numpy when spark-submittingspark-submitting 时没有名为 numpy 的模块
【发布时间】:2015-04-04 17:18:10
【问题描述】:

我正在提交一个导入 numpy 的 python 文件,但我收到了 no module named numpy 错误。

$ spark-submit --py-files projects/other_requirements.egg projects/jobs/my_numpy_als.py
Traceback (most recent call last):
  File "/usr/local/www/my_numpy_als.py", line 13, in <module>
    from pyspark.mllib.recommendation import ALS
  File "/usr/lib/spark/python/pyspark/mllib/__init__.py", line 24, in <module>
    import numpy
ImportError: No module named numpy

我想我会为 numpy —python-files 提取一个鸡蛋,但我无法弄清楚如何构建那个鸡蛋。但后来我突然想到 pyspark 本身使用 numpy。引入我自己的 numpy 版本会很愚蠢。

您有什么想法可以在这里做适当的事情吗?

【问题讨论】:

    标签: numpy apache-spark pyspark


    【解决方案1】:

    Spark 使用的 Python 版本似乎没有安装 numpy。这可能是因为您在虚拟环境中工作。

    试试这个:

    # The following is for specifying a Python version for PySpark. Here we
    # use the currently calling Python version.
    # This is handy for when we are using a virtualenv, for example, because
    # otherwise Spark would choose the default system Python version.
    os.environ['PYSPARK_PYTHON'] = sys.executable
    

    【讨论】:

    • 尝试为您当前使用的 Python 二进制文件安装完整的 SciPy 或独立的 NumPy 包:scipy.org/install.html
    【解决方案2】:

    我通过在所有 emr 节点上安装 numpy 来实现此功能,方法是配置一个包含以下内容(除其他外)的小型引导脚本。

    #!/bin/bash -xe sudo yum install python-numpy python-scipy -y

    然后通过将以下选项添加到 aws emr 命令来配置要在启动集群时执行的引导脚本(以下示例为引导脚本提供了一个参数)

    --bootstrap-actions Path=s3://some-bucket/keylocation/bootstrap.sh,Name=setup_dependencies,Args=[s3://some-bucket]

    这也可以在从 DataPipeline 自动设置集群时使用。

    【讨论】:

      【解决方案3】:

      有时,当您导入某些库时,您的命名空间会被numpy 函数污染。 minmaxsum 等函数特别容易受到这种污染。如有疑问,请定位对这些函数的调用并将这些调用替换为__builtin__.sum 等。这样做有时会比定位污染源更快。

      【讨论】:

        【解决方案4】:

        确保您的 spark-env.shPYSPARK_PATH 指向正确的 Python 版本。将export PYSPARK_PATH=/your_python_exe_path 添加到/conf/spark-env.sh 文件中。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-03-04
          • 2020-04-21
          • 2015-12-17
          • 2021-11-07
          • 2016-09-10
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多