PySpark 可以使用 numpy 数组吗?

Posted

技术标签:

【中文标题】PySpark 可以使用 numpy 数组吗?【英文标题】:Can PySpark work with numpy arrays? 【发布时间】:2015-12-02 14:35:39 【问题描述】:

我尝试在 pyspark 会话中执行以下命令:

>>> a = [1,2,3,4,5,6,7,8,9,10]
>>> da = sc.parallelize(a)
>>> da.reduce(lambda a, b: a + b)

效果很好。我得到了预期的答案(55)。现在我尝试做同样的事情,但使用 numpy 数组而不是 Python 列表:

>>> import numpy
>>> a = numpy.array([1,2,3,4,5,6,7,8,9,10])
>>> da = sc.parallelize(a)
>>> da.reduce(lambda a, b: a + b)

结果我得到了很多错误。更具体地说,我在错误消息中多次看到以下错误:

ImportError: No module named numpy.core.multiarray

是不是我的集群没有安装某些东西,或者 pyspark 无法在基本层面上使用 numpy 数组?

【问题讨论】:

看起来像是配置(版本不匹配?)问题,否则应该可以正常工作。 这里说支持 numpy:link 它在 Python 选项卡下提供了一些信息。 【参考方案1】:

我也有类似的问题。我在下面做了并解决了问题:

pip uninstall numpy
pip install numpy
pip install nose

【讨论】:

以上是关于PySpark 可以使用 numpy 数组吗?的主要内容,如果未能解决你的问题,请参考以下文章

从 Pyspark Dataframe 中提取 numpy 数组

Pyspark - 尝试迭代 numpy 数组时出错

将 numpy 数组的 rdd 转换为 pyspark 数据帧

我可以使 Numpy 数组不可变吗?

numpy 数组可以在 GPU 中运行吗?

Java 数组到 NumPy 数组的快速转换 (Py4J)