python - 使用 MLlib 时出现 NumPy 异常,即使安装了 Numpy

标签 python numpy apache-spark pyspark apache-spark-mllib

这是我要执行的代码:

from pyspark.mllib.recommendation import ALS
iterations=5
lambdaALS=0.1
seed=5L
rank=8
model=ALS.train(trainingRDD,rank,iterations, lambda_=lambdaALS, seed=seed)

当我运行依赖于 numpy 的 model=ALS.train(trainingRDD,rank,iterations, lambda_=lambdaALS, seed=seed) 命令时,Spark 使用的 Py4Java 库抛出以下消息:

Py4JJavaError: An error occurred while calling o587.trainALSModel.
: org.apache.spark.SparkException: Job aborted due to stage failure: Task 0 in stage 67.0 failed 4 times, most recent failure: Lost task 0.3 in stage 67.0 (TID 195, 192.168.161.55): org.apache.spark.api.python.PythonException: Traceback (most recent call last):
  File "/home/platform/spark/python/lib/pyspark.zip/pyspark/worker.py", line 98, in main
    command = pickleSer._read_with_length(infile)
  File "/home/platform/spark/python/lib/pyspark.zip/pyspark/serializers.py", line 164, in _read_with_length
    return self.loads(obj)
  File "/home/platform/spark/python/lib/pyspark.zip/pyspark/serializers.py", line 421, in loads
    return pickle.loads(obj)
  File "/home/platform/spark/python/lib/pyspark.zip/pyspark/mllib/__init__.py", line 27, in <module>
Exception: MLlib requires NumPy 1.4+

NumPy 1.10 安装在错误消息中所述的机器上。 此外,在我的 Jupyter notebook 中直接执行以下命令时,我得到了 1.9.2 版: 导入 numpy numpy.version.version

我显然正在运行早于 1.4 的 NumPy 版本,但我不知道在哪里。我如何知道我需要在哪台机器上更新我的 NumPy 版本?

最佳答案

这是 Mllib 初始化代码中的一个错误

import numpy
if numpy.version.version < '1.4':
    raise Exception("MLlib requires NumPy 1.4+")

'1.10' 是 < 来自 '1.4' 您可以使用 NumPy 1.9.2。

如果您必须使用 NumPy 1.10 并且不想升级到 spark 1.5.1。 对代码进行手动更新。 https://github.com/apache/spark/blob/master/python/pyspark/mllib/init.py

关于python - 使用 MLlib 时出现 NumPy 异常,即使安装了 Numpy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33045556/

相关文章:

python - Django Json 喜欢按钮和计数喜欢不起作用

python - MetPy 中的 Pint Python 模块 - pint.UnitRegistry TypeError - 意外的关键字参数

python - Numpy 高级索引

apache-spark - Spark为数据框连接指定多列条件

sql - pyspark sql数据框只保留空值

java - 如何从spark java数据集中删除某些记录?

使用正则表达式解析python字符串

python - 使用 tweepy 发送两个不同的元素

python - 我如何在 PySpark 的 DataFrame 中按总和排序?

Python:为什么 np.where 不适用于两个条件?