【发布时间】:2015-12-28 02:43:39
【问题描述】:
给定以下列表:
[(0, [135, 2]), (0, [2409, 1]), (0, [12846, 2]), (1, [13840, 2]), ...]
如果列表值的第二个元素,我需要为每个键输出列表值的第一个元素的列表(即,135, 2409, 12846 用于键 0 和 13840 用于键 1) (即,2, 1, 2 用于0 和2 用于1)大于或等于某个值(假设为2)。例如,在这种特殊情况下,输出应该是:
[(0, [135, 12846]), (1, [13840]), ...]
元组(0, [2409, 1]) 被丢弃,因为1 < 2。
我通过应用groupByKey()、mapValues(list) 和最终的map 函数实现了这一点,但显然groupByKey() 的效率低于reduce 函数。
仅使用reduceByKey() 或combineByKey() 函数就可以完成该任务吗?
【问题讨论】:
标签: python mapreduce apache-spark reduce pyspark