使用map reduce

时间:2016-06-19 17:35:48

标签: apache-spark mapreduce group-by

我知道spark中有一个groupby实现,但我试图了解它们是如何工作的。 我查看了source code

我不确切地知道它是仅映射键还是还执行缩减操作。

你将如何实现分组 - 使用map / reduce?

1 个答案:

答案 0 :(得分:1)

这个问题有点令人费解。但这是对你的意图的刺痛。

任何(defn fill [v x] (vec (repeat (count v) x))) (fill [3 4 2 5 8] 32) ;=> [32 32 32 32 32] 函数 需要aggregate阶段。 reduce是这样的聚合函数。实际上groupBy基本上是最昂贵的聚合函数族。

AFA代码:这里显示清楚:

groupBy

请注意, groupByKey(new HashPartitioner(numPartitions)) 总是执行HashPartitioner:因此您将获得完整的shuffle(在map / reduce lingo中)操作。

更新 OP要求提供有关reducer-side如何运作的详细信息。

与Map-Reduce类似,reduce根据配置的reduce组合map阶段的结果 - 评估每条记录的密钥并根据以下内容分配到相应的分区。钥匙。那是Partitioner阶段。

然后shuffle逻辑将应用指定的reducer操作 - 可能还有aggregate(即基于聚合条件的过滤器)和having(如果他们是sorting不是'总'排序)