我的RDD格式为:(日期,城市)。里面的数据是这样的:
day1, city1
day1, city2
day1, city2
day2, city1
[...]
我需要每天获得最“重复”的城市,即我需要以下结果:
day1, city2
day2, city1
day3, ...
你能帮我解决一下如何用Python做的事吗?
我尝试像简单的wordcount一样:
rdd.map(lambda x: (x[0], [1]. \
map(lambda y:y,1). \
reduceByKey(lambda a,b: a+b). \
takeOrdered(1, lambda s:-1*s[1]))).collect()
但当然它不起作用......
提前致谢。
答案 0 :(得分:0)
这只是一个修改过的wordcount:
rdd.map(lambda x: (x, 1)) \
.reduceByKey(lambda x, y: x + y) \
.map(lambda ((day, city), count): (day, (city, count))) \
.reduceByKey(lambda x, y: max(x, y, key=lambda x: x[1]))