hadoop - hadoop map减少二次排序

标签 hadoop mapreduce hadoop-partitioning

谁能解释我在hadoop中如何进行二级分类?
为什么必须使用GroupingComparator以及它在hadoop中如何工作?

我正在浏览下面给出的链接,并对groupcomapator的工作方式有疑问。
谁能解释我分组比较器的工作原理?

http://www.bigdataspeak.com/2013/02/hadoop-how-to-do-secondary-sort-on_25.html

最佳答案

分组比较器

数据到达精简器后,所有数据均按键分组。由于我们有一个复合键,因此我们需要确保记录仅按自然键分组。这是通过编写自定义GroupPartitioner完成的。为了将记录分组在一起,我们只考虑了TemperaturePair类的yearMonth字段的Comparator对象。

public class YearMonthGroupingComparator extends WritableComparator {

    public YearMonthGroupingComparator() {
        super(TemperaturePair.class, true);
    }

    @Override
    public int compare(WritableComparable tp1, WritableComparable tp2) {
        TemperaturePair temperaturePair = (TemperaturePair) tp1;
        TemperaturePair temperaturePair2 = (TemperaturePair) tp2;
        return temperaturePair.getYearMonth().compareTo(temperaturePair2.getYearMonth());
    }
}

这是运行我们的二级排序作业的结果:
new-host-2:sbin bbejeck$ hdfs dfs -cat secondary-sort/part-r-00000

190101 -206

190102 -333

190103 -272

190104 -61

190105 -33

190106 44

190107 72

190108 44

190109 17

190110 -33

190111 -217

190112 -300

虽然按值对数据进行排序可能不是普遍的需求,但它是在需要时可以放在口袋里的好工具。此外,通过使用自定义分区程序和组分区程序,我们能够更深入地了解Hadoop的内部工作原理。
也请引用此链接。 What is the use of grouping comparator in hadoop map reduce

关于hadoop - hadoop map减少二次排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34620305/

相关文章:

hadoop - Hadoop Hcatalog-如何传递键值对

带有 Lustre 的 Docker Swarm 卷?

hadoop - Hadoop 中键的数量限制是多少?

java - mapreduce.reduce.shuffle.memory.limit.percent、mapreduce.reduce.shuffle.input.buffer.percent 和 mapreduce.reduce.shuffle.merge.percent

hadoop - 了解hadoop中的自定义分区器

java - Hadoop MapReduce - 如何创建动态分区

hadoop - 我可以通过在 Hive 中通过 "CREATE TABLE AS SELECT....."创建的表进行聚类/分桶吗?

Hadoop自带的Serialization和AVRO序列化的关系?

hadoop - 无法访问 HBase Web UI

Hadoop 输入文件名问题