Mapreduce_WritableComparable自定义示例

来源:互联网 发布:2网络作家富豪榜 编辑:程序博客网 时间:2024/06/06 11:47

通过override compareTo()方法来实现自定义排序规则

代码如下:

package com.xfyan.MR.one;import java.io.DataInput;import java.io.DataOutput;import java.io.IOException;import org.apache.hadoop.io.Text;import org.apache.hadoop.io.WritableComparable;public class WritableTest implements WritableComparable<WritableTest>{private Text first;private Text second;public void set(Text first,Text second){this.first = first;this.second = first;}public WritableTest(String first,String second){set(new Text(first),new Text(second));}public WritableTest(Text first,Text second){set(first,second);}publicWritableTest(){set(new Text(),new Text());}public Text getFirst(){return first;}public Text getSecond(){return second;}public void readFields(DataInput in) throws IOException {first.readFields(in);second.readFields(in);}public void write(DataOutput out) throws IOException {first.write(out);second.write(out);}public int compareTo(WritableTest o) {int cmp = first.compareTo(o.first);if(cmp != 0){return cmp;}return second.compareTo(o.second);}@Overridepublic boolean equals(Object obj) {if(obj instanceof WritableTest){WritableTest wt = (WritableTest)obj;return first.equals(wt.first) && second.equals(wt.second); }return false;}@Overridepublic int hashCode() {return first.hashCode() * 163 + second.hashCode();}@Overridepublic String toString() {return first + "\t" + second;}}

0 0
原创粉丝点击