我是hadoop的新手,对hadoop一点也不感兴趣。
在mapreduce作业中,reducer获取每个键的值列表。我想知道,每个键的默认值排序是什么。是否与从映射器中写出的顺序相同。您可以更改每个键中值的排序(例如asc或desc)。
答案 0 :(得分:1)
在MapReduce中,有一些属性会影响地图输出的发射。这被称为次要排序。即,有两个因素会影响这一点:
默认分区程序是org.apache.hadoop.mapred.lib.HashPartitioner
类,它会记录记录的键以确定记录所属的分区。
比较器因数据类型而异。如果要控制排序顺序,请覆盖compare(WritableComparable,WritableComparable)
接口的WritableComparator()
。 See documentation here。
答案 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上阅读更多内容)。