谁能解释我在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/