python spark reducebykey 形成单个列表
python spark reducebykey forming a single list
我有如下两行,它们产生了附加的输出。输出是正确的。但是对于第二个语句,我想形成一个元组而不是元组的元组。我怎样才能达到同样的效果?
print ratingsRDD.map(lambda x: (x[0],x[2])).take(5)
print ratingsRDD.map(lambda x: (x[0],x[2])).reduceByKey(lambda p,q: (p,q)).take(4)
[(1, 5.0), (1, 3.0), (1, 5.0), (1, 5.0), (1, 4.0)]
[(2, ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((4.0, 3.0), 4.0), 3.0), 3.0), 4.0), 3.0), 5.0), 4.0), 4.0), 3.0), 3.0), 3.0), 3.0), 4.0), 4.0), 5.0), 5.0), 4.0), 3.0), 3.0), 4.0), 4.0), 3.0), 5.0), 4.0), 5.0), 5.0), 3.0), 3.0), 2.0), 4.0), 3.0), 5.0), 3.0), 4.0), 5.0), 3.0), 4.0), 3.0), 3.0), 3.0), 3.0), 3.0), 5.0), 3.0), 5.0), 1.0), 3.0), 5.0), 4.0), 4.0), 3.0), 4.0), 4.0), 3.0), 3.0), 5.0), 4.0), 5.0), 2.0), 3.0), 2.0), 1.0), ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((5.0, 4.0), 4.0), 5.0), 3.0), 5.0), 3.0), 2.0), 3.0), 3.0), 2.0), 2.0), 4.0), 5.0), 5.0), 2.0), 5.0), 4.0), 4.0), 2.0), 5.0), 3.0), 5.0), 3.0), 3.0), 4.0), 4.0), 4.0), 3.0), 4.0), 3.0), 5.0), 5.0), 5.0), 3.0), 4.0), 2.0), 5.0), 4.0), 5.0), 2.0), 4.0), 4.0), 4.0), 3.0), 4.0), 5.0), 4.0), 3.0), 2.0), 5.0), 4.0), 5.0), 4.0), 3.0), 4.0), 3.0), 5.0), 5.0), 3.0), 4.0), 3.0), 5.0), 5.0), 5.0))), (4, ((((((((((3.0, 4.0), 5.0), 4.0), 5.0), 4.0), 4.0), 5.0), 5.0), 5.0), ((((((((((5.0, 4.0), 4.0), 5.0), 2.0), 5.0), 4.0), 4.0), 1.0), 5.0), 5.0))), (6, ((((((((((((((((((((((((((((((((((((5.0, 4.0), 5.0), 4.0), 5.0), 4.0), 5.0), 4.0), 4.0), 4.0), 3.0), 4.0), 4.0), 3.0), 4.0), 4.0), 3.0), 4.0), 5.0), 5.0), 3.0), 3.0), 4.0), 5.0), 4.0), 4.0), 5.0), 5.0), 5.0), 4.0), 4.0), 3.0), 5.0), 4.0), 4.0), 4.0), ((((((((((((((((((((((((((((((((((4.0, 4.0), 5.0), 4.0), 4.0), 2.0), 5.0), 3.0), 4.0), 1.0), 3.0), 5.0), 3.0), 4.0), 4.0), 3.0), 5.0), 4.0), 3.0), 3.0), 3.0), 3.0), 3.0), 5.0), 4.0), 4.0), 4.0), 5.0), 3.0), 3.0), 3.0), 3.0), 4.0), 4.0), 4.0))), (8, ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((3.0, 5.0), 3.0), 5.0), 5.0), 3.0), 3.0), 3.0), 5.0), 3.0), 3.0), 5.0), 3.0), 4.0), 3.0), 3.0), 3.0), 3.0), 3.0), 5.0), 2.0), 5.0), 3.0), 4.0), 5.0), 5.0), 4.0), 4.0), 5.0), 3.0), 5.0), 3.0), 3.0), 5.0), 3.0), 4.0), 4.0), 2.0), 4.0), 5.0), 4.0), 3.0), 5.0), 5.0), 3.0), 4.0), 5.0), 4.0), 3.0), 5.0), 4.0), 4.0), 3.0), 5.0), 4.0), 3.0), 3.0), 4.0), 4.0), 4.0), 3.0), 4.0), 3.0), 5.0), 2.0), 3.0), 3.0), 5.0), 5.0), 4.0), ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((3.0, 3.0), 4.0), 4.0), 3.0), 3.0), 5.0), 5.0), 3.0), 3.0), 2.0), 4.0), 4.0), 4.0), 3.0), 5.0), 5.0), 4.0), 5.0), 3.0), 4.0), 5.0), 4.0), 3.0), 5.0), 3.0), 3.0), 5.0), 5.0), 5.0), 4.0), 3.0), 5.0), 3.0), 2.0), 4.0), 4.0), 4.0), 4.0), 5.0), 5.0), 3.0), 3.0), 5.0), 5.0), 5.0), 4.0), 4.0), 4.0), 5.0), 4.0), 4.0), 2.0), 4.0), 3.0), 4.0), 5.0), 5.0), 5.0), 3.0), 2.0), 5.0), 4.0), 5.0), 3.0), 5.0), 5.0), 4.0), 3.0)))]
只需使用groupByKey
。这里没有充分的理由使用 reduceByKey
:
grouped = sc.parallelize(
[(1, 5.0), (1, 3.0), (1, 5.0), (1, 5.0), (1, 4.0)]
).groupByKey()
grouped.mapValues(list).first()
## (1, [5.0, 3.0, 5.0, 5.0, 4.0])
郑重声明,您拥有的是 tuples
中的 tuple
,而不是 lists
中的 list
。
如果您真的想要一个不需要 groupByKey
的解决方案,请参阅 。
我有如下两行,它们产生了附加的输出。输出是正确的。但是对于第二个语句,我想形成一个元组而不是元组的元组。我怎样才能达到同样的效果?
print ratingsRDD.map(lambda x: (x[0],x[2])).take(5)
print ratingsRDD.map(lambda x: (x[0],x[2])).reduceByKey(lambda p,q: (p,q)).take(4)
[(1, 5.0), (1, 3.0), (1, 5.0), (1, 5.0), (1, 4.0)]
[(2, ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((4.0, 3.0), 4.0), 3.0), 3.0), 4.0), 3.0), 5.0), 4.0), 4.0), 3.0), 3.0), 3.0), 3.0), 4.0), 4.0), 5.0), 5.0), 4.0), 3.0), 3.0), 4.0), 4.0), 3.0), 5.0), 4.0), 5.0), 5.0), 3.0), 3.0), 2.0), 4.0), 3.0), 5.0), 3.0), 4.0), 5.0), 3.0), 4.0), 3.0), 3.0), 3.0), 3.0), 3.0), 5.0), 3.0), 5.0), 1.0), 3.0), 5.0), 4.0), 4.0), 3.0), 4.0), 4.0), 3.0), 3.0), 5.0), 4.0), 5.0), 2.0), 3.0), 2.0), 1.0), ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((5.0, 4.0), 4.0), 5.0), 3.0), 5.0), 3.0), 2.0), 3.0), 3.0), 2.0), 2.0), 4.0), 5.0), 5.0), 2.0), 5.0), 4.0), 4.0), 2.0), 5.0), 3.0), 5.0), 3.0), 3.0), 4.0), 4.0), 4.0), 3.0), 4.0), 3.0), 5.0), 5.0), 5.0), 3.0), 4.0), 2.0), 5.0), 4.0), 5.0), 2.0), 4.0), 4.0), 4.0), 3.0), 4.0), 5.0), 4.0), 3.0), 2.0), 5.0), 4.0), 5.0), 4.0), 3.0), 4.0), 3.0), 5.0), 5.0), 3.0), 4.0), 3.0), 5.0), 5.0), 5.0))), (4, ((((((((((3.0, 4.0), 5.0), 4.0), 5.0), 4.0), 4.0), 5.0), 5.0), 5.0), ((((((((((5.0, 4.0), 4.0), 5.0), 2.0), 5.0), 4.0), 4.0), 1.0), 5.0), 5.0))), (6, ((((((((((((((((((((((((((((((((((((5.0, 4.0), 5.0), 4.0), 5.0), 4.0), 5.0), 4.0), 4.0), 4.0), 3.0), 4.0), 4.0), 3.0), 4.0), 4.0), 3.0), 4.0), 5.0), 5.0), 3.0), 3.0), 4.0), 5.0), 4.0), 4.0), 5.0), 5.0), 5.0), 4.0), 4.0), 3.0), 5.0), 4.0), 4.0), 4.0), ((((((((((((((((((((((((((((((((((4.0, 4.0), 5.0), 4.0), 4.0), 2.0), 5.0), 3.0), 4.0), 1.0), 3.0), 5.0), 3.0), 4.0), 4.0), 3.0), 5.0), 4.0), 3.0), 3.0), 3.0), 3.0), 3.0), 5.0), 4.0), 4.0), 4.0), 5.0), 3.0), 3.0), 3.0), 3.0), 4.0), 4.0), 4.0))), (8, ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((3.0, 5.0), 3.0), 5.0), 5.0), 3.0), 3.0), 3.0), 5.0), 3.0), 3.0), 5.0), 3.0), 4.0), 3.0), 3.0), 3.0), 3.0), 3.0), 5.0), 2.0), 5.0), 3.0), 4.0), 5.0), 5.0), 4.0), 4.0), 5.0), 3.0), 5.0), 3.0), 3.0), 5.0), 3.0), 4.0), 4.0), 2.0), 4.0), 5.0), 4.0), 3.0), 5.0), 5.0), 3.0), 4.0), 5.0), 4.0), 3.0), 5.0), 4.0), 4.0), 3.0), 5.0), 4.0), 3.0), 3.0), 4.0), 4.0), 4.0), 3.0), 4.0), 3.0), 5.0), 2.0), 3.0), 3.0), 5.0), 5.0), 4.0), ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((3.0, 3.0), 4.0), 4.0), 3.0), 3.0), 5.0), 5.0), 3.0), 3.0), 2.0), 4.0), 4.0), 4.0), 3.0), 5.0), 5.0), 4.0), 5.0), 3.0), 4.0), 5.0), 4.0), 3.0), 5.0), 3.0), 3.0), 5.0), 5.0), 5.0), 4.0), 3.0), 5.0), 3.0), 2.0), 4.0), 4.0), 4.0), 4.0), 5.0), 5.0), 3.0), 3.0), 5.0), 5.0), 5.0), 4.0), 4.0), 4.0), 5.0), 4.0), 4.0), 2.0), 4.0), 3.0), 4.0), 5.0), 5.0), 5.0), 3.0), 2.0), 5.0), 4.0), 5.0), 3.0), 5.0), 5.0), 4.0), 3.0)))]
只需使用groupByKey
。这里没有充分的理由使用 reduceByKey
:
grouped = sc.parallelize(
[(1, 5.0), (1, 3.0), (1, 5.0), (1, 5.0), (1, 4.0)]
).groupByKey()
grouped.mapValues(list).first()
## (1, [5.0, 3.0, 5.0, 5.0, 4.0])
郑重声明,您拥有的是 tuples
中的 tuple
,而不是 lists
中的 list
。
如果您真的想要一个不需要 groupByKey
的解决方案,请参阅