【发布时间】:2017-03-29 17:13:02
【问题描述】:
以下是我在 pyspark shell 中尝试的代码。
from bitarray import bitarray
a = bitarray('0') * 5
b = bitarray('1') * 5
c = [a.copy() for x in range(3)]
d = [b.copy() for x in range(5)]
e = c + d
rdd = sc.parallelize(e).map(lambda x : (x, 1)).reduceByKey(lambda x, y : x + y).collect()
print(rdd)
预期:
[(bitarray('11111'), 5), (bitarray('00000'), 3)
实际输出:
[(bitarray('11111'), 1), (bitarray('00000'), 1), (bitarray('11111'), 1), (bitarray('11111'), 1), (bitarray('00000'), 1), (bitarray('11111'), 1), (bitarray('00000'), 1), (bitarray('11111'), 1)]
为什么 spark 引擎不能区分不同的位数组值?
【问题讨论】:
-
a[0] 和 a[1] 的 hash 和 equals 是什么?我相信通过 id(a[0]) 显示,但我不是真正的 python 人
-
不要认为这是可能的,看这里stackoverflow.com/a/29725381/4964651
-
谢谢@mtoto!这验证了问题。哈希必须相等。
标签: python apache-spark pyspark