reducer输出的每个键的值列表的排序

snvhrwxg  于 2021-05-29  发布在  Hadoop
关注(0)|答案(2)|浏览(344)

我是hadoop新手,对hadoop有点困惑。
在mapreduce作业中,reducer获取每个键的值列表。我想知道,每个键的默认值顺序是什么。与从Map器中写出的顺序相同。您可以更改每个键中值的顺序(如asc或desc)。

u5rb5r59

u5rb5r591#

在mapreduce中,有几个属性会影响贴图输出的发射。这被称为二次排序。也就是说,有两个因素会影响这一点:
partitioner,它将Map输出在减速器之间进行分割。每个分区都由一个reduce任务处理,因此分区数等于作业的reduce任务数。
比较器,用于比较具有相同键的值。
默认的分区器是 org.apache.hadoop.mapred.lib.HashPartitioner 类,它散列记录的键以确定该记录属于哪个分区。
比较器因数据类型而异。如果要控制排序顺序,请重写 compare(WritableComparable,WritableComparable)WritableComparator() 接口。请参阅此处的文档。

qyswt5oh

qyswt5oh2#

Is the the same order as it has been written out from the mapper. -是的,对于单个Map器是这样的。但是,如果您的作业有多个Map器,您可能看不到使用相同输入的两次运行的相同顺序,因为不同的Map器可能会结束不同的时间。 Can you change the ordering ( eg asc or desc ) of the values in each key -是的,它是使用一种叫做“二次排序”的技术来完成的(你可以在谷歌上搜索更多关于这个的内容)。

相关问题