【发布时间】:2016-09-21 15:29:01
【问题描述】:
我有一个 (key,value) 元素的 RDD。键是 NumPy 数组。 NumPy 数组不可散列,当我尝试执行 reduceByKey 操作时,这会导致问题。
有没有办法用我的手动哈希函数提供 Spark 上下文?或者有没有其他方法可以解决这个问题(除了实际“离线”散列数组并将散列键传递给 Spark)?
这是一个例子:
import numpy as np
from pyspark import SparkContext
sc = SparkContext()
data = np.array([[1,2,3],[4,5,6],[1,2,3],[4,5,6]])
rd = sc.parallelize(data).map(lambda x: (x,np.sum(x))).reduceByKey(lambda x,y: x+y)
rd.collect()
错误是:
调用时出错 z:org.apache.spark.api.python.PythonRDD.collectAndServe。
...
TypeError: unhashable type: 'numpy.ndarray'
【问题讨论】: