我有两行如下所示,它们产生了附加的输出。输出是正确的。但是对于第二个语句,我想要形成一个元组,而不是一个元组。我怎样才能达到同样的目的?
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)))]发布于 2016-02-29 00:28:10
只需使用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])为了记录在案,您拥有的是tuple of tuples而不是list of lists。
如果您真的想要一个不需要groupByKey的解决方案,请参阅How can I use reduceByKey instead of GroupByKey to construct a list?。
https://stackoverflow.com/questions/35689630
复制相似问题