我正在尝试在格式为
似乎pyspark不接受数组作为普通键值减少,只需应用.reduceByKey(add)。我已经尝试将数组转换为字符串,通过
有没有办法让pyspark使用数组作为键或使用另一个函数快速将字符串转换回数组?
以下是相关的错误代码:
(([a,b,c], 1), ([a,b,c], 1), ([a,d,b,e], 1), ...
的数据上调用pyspark的reduceByKey函数。似乎pyspark不接受数组作为普通键值减少,只需应用.reduceByKey(add)。我已经尝试将数组转换为字符串,通过
.map((x,y): (str(x),y))
,但这样做不起作用,因为将字符串后处理回数组太慢了。有没有办法让pyspark使用数组作为键或使用另一个函数快速将字符串转换回数组?
以下是相关的错误代码:
File "/home/jan/Documents/spark-1.4.0/python/lib/pyspark.zip/pyspark/shuffle.py", line 268, in mergeValues
d[k] = comb(d[k], v) if k in d else creator(v)
TypeError: unhashable type: 'list'
enter code here
总结:
输入:x =[([a,b,c], 1), ([a,b,c], 1), ([a,d,b,e], 1), ...]
期望输出:y =[([a,b,c], 2), ([a,d,b,e], 1),...]
这样我就可以通过 y[0][0][0]
访问 a
,并通过 y[0][1]
访问 2
。
dicts
或sets
时,同样适用。 - zero323