1.自定义排序(WritableComparable)
我们写mr程序来处理文本时,经常会将处理后的信息封装到我们自定义的bean中,并将bean作为map输出的key来传输。上一文我用图解分析了mr程序的基本流程。而mr程序会在处理数据的过程中(传输到reduce之前)对数据排序(如:map端生成的文件中的内容分区且区内有序)。
我们自定义bean来封装处理后的信息的话,我们可以自定义排序规则来挑选bean中的某几个属性来作为排序的依据,这样就很灵活了。
import org.apache.hadoop.io.WritableComparable;
public class Person implements WritableComparable<Person> {
private String name; //姓名
private int age; //年龄
private int charm; //魅力值
// 如果空构造函数被覆盖,一定要显示的定义一下,否则反序列化时会抛异常。
public Person() {
}
public Person(String name, int age, int charm) {
super();
this.name = name;
this.age = age;
this.charm = charm;
}
public String getName() {
return name;
}
public void