Spark python 每个键最重复的值
Spark python most repeated value for each key
我有一个格式为:(日期,城市)的 RDD。而里面的数据是这样的:
day1, city1
day1, city2
day1, city2
day2, city1
[...]
我需要每天获取最多"repeated"个城市,即我需要以下结果:
day1, city2
day2, city1
day3, ...
你能帮我在 Python 中怎么做吗?
我试着像简单的字数统计那样来做:
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()
但是当然不行...
提前致谢。
这只是修改后的字数:
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]))
我有一个格式为:(日期,城市)的 RDD。而里面的数据是这样的:
day1, city1
day1, city2
day1, city2
day2, city1
[...]
我需要每天获取最多"repeated"个城市,即我需要以下结果:
day1, city2
day2, city1
day3, ...
你能帮我在 Python 中怎么做吗?
我试着像简单的字数统计那样来做:
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()
但是当然不行...
提前致谢。
这只是修改后的字数:
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]))