为减速器输出的每个键排序值列表

时间:2016-01-14 14:05:08

标签: hadoop

我是hadoop的新手,对hadoop一点也不感兴趣。

在mapreduce作业中,reducer获取每个键的值列表。我想知道,每个键的默认值排序是什么。是否与从映射器中写出的顺序相同。您可以更改每个键中值的排序(例如asc或desc)。

2 个答案:

答案 0 :(得分:1)

在MapReduce中,有一些属性会影响地图输出的发射。这被称为次要排序。即,有两个因素会影响这一点:

  1. 分区程序,它将地图输出分配给reducer。每个分区都由reduce任务处理,因此分区数等于作业的reduce任务数。
  2. 比较器,用相同的键比较值。
  3. 默认分区程序是org.apache.hadoop.mapred.lib.HashPartitioner类,它会记录记录的键以确定记录所属的分区。

    比较器因数据类型而异。如果要控制排序顺序,请覆盖compare(WritableComparable,WritableComparable)接口的WritableComparator()See documentation here

    Photo Credit: Tom White Hadoop: The Definitive Guide Ed. 3

答案 1 :(得分:1)

Is the the same order as it has been written out from the mapper. - 单个映射器确实如此。但是,如果您的作业有多个映射器,则可能看不到具有相同输入的两次运行的相同顺序,因为不同的映射器可能会以不同的时间结束。

Can you change the ordering ( eg asc or desc ) of the values in each key - 它是使用一种称为“二级排序”的技术完成的(您可以在Google上阅读更多内容)。