Spark python每个键的重复值最多

时间:2016-05-21 17:33:38

标签: python apache-spark rdd

我的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()

但当然它不起作用......

提前致谢。

1 个答案:

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