python spark reducebykey形成一个列表

时间:2016-02-28 23:28:52

标签: python apache-spark pyspark rdd

我有两行如下,他们产生附加的输出。输出是正确的。但是在第二个语句的情况下,我想形成一个单元组,而不是一个元组元组。我怎么能实现同样的目标?

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)))]

1 个答案:

答案 0 :(得分:4)

只需使用call checkAdminAccess(3); #returns null call checkAdminAccess(6); #returns null 即可。这里没有充分的理由使用INSERT INTO `staff` (`StaffID`,`AccountID`,`RoleID`,`ManagerID`,`IsAdmin`) VALUES (1,3,1,1,0); INSERT INTO `staff` (`StaffID`,`AccountID`,`RoleID`,`ManagerID`,`IsAdmin`) VALUES (2,6,2,1,1);

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 tuples

如果您真的想要一个不需要list的解决方案,请参阅How can I use reduceByKey instead of GroupByKey to construct a list?