partition是分区,默认根据key的hash值分区,确定各个key分到哪个reducer中去,计算方法一般是HashValue%Num(reducer),如果只有一个分区,则全都分配到一个区。
sort是在分区内根据key进行排序。
group是分组,是在partition里面再分组,相同的key分到一个组中去,实现方法是compare(o1,o2),相同为一个group。
有些问题需要我们定制Writeable类型,构造一个组合键,比如二次排序的问题,构造组合键(年份+温度),根据年份升序,根据温度降序问题。需要我们构造一个年份加温度的组合键。年份称作自然键。定义组合键类时需要implements WritableComparable<T>,重写readFields(),write(),get/set,compareTo(),toString(),hashCode()
首先我们通过自然键来给数据分区,将同一个区的数据分配到一个reducer中去。
利用组合键通过extends WritableComparator设计sort方法,重写compare方法实现多次排序。
利用自然键部分extends WritableComparator设计group方法,重写compare方法将自然键相同的数据分到一个组里面去。