我编写了映射器代码,其中键作为IntTextPair发出,我想通过IntTextPair中的Int对映射器结果进行分组,如
[1 Shanghai]
[1 Test]
[2 Set]
并且映射器结果应分组为:
[1 Shanghai, Test]
[2 Set]
我已经实现了Comparator类:
import org.apache.hadoop.io.WritableComparable;
import org.apache.hadoop.io.WritableComparator;
public class GroupByInput extends WritableComparator {
public GroupByInput() {
super(IntTextPair.class, true);
}
@Override
public int compare(WritableComparable it1, WritableComparable it2) {
IntTextPair Pair1 = (IntTextPair) it1;
IntTextPair Pair2 = (IntTextPair) it2;
return Pair1.getFirst().compareTo(Pair2.getFirst());
}
}
在配置文件中我设置了比较器类,如下所示:
Configuration conf = new Configuration();
Job job = new Job(conf);
job.setGroupingComparatorClass(GroupByInput.class);
我会朝着正确的方向前进吗?我需要一些帮助
答案 0 :(得分:0)
您无法合并/合并当前概述的密钥。当前的Mapper输出值类型/类是什么 - 是否有理由不能从映射器输出KV?
如果你确实有另一个类/类型从mapper输出作为Value组件,那么你仍然可以通过以下方式实现这一点: