0
以下は、pysparkシェルで試しているコードです。予想キーがbitarray型の場合、reduceByKeyが期待どおりに機能しない
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)]
なぜ異なるbitarray値を区別することができ、エンジンを点火されていませんか?
a [0]とa [1]のハッシュと等価は何ですか?私はid(a [0])を介して表示されますが、実際にはpythonの男ではないと信じています –
これは可能だとは思わない、ここを参照http://stackoverflow.com/a/29725381/4964651 – mtoto
ありがとう@mtoto!それが問題を検証します。ハッシュは平等でなければならない。 –