Hadoop MapReduce的key类型的实例应该可以进行互相比较来满足排序的目的。为了在一个MapReduce计算中用作键类型,Hadoop的Writable数据类型应该实现org.apache.hadoop.io.WritableComparable<T>接口。WritableComparable接口继承于org.apache.hadoop.io.Writable接口,并增加了CompareTo()方法来执行比较。
下面是以HTTP服务器日志条目实现自定义hadoop WritableComparable数据类型的步骤,它使用请求的主机名和时间戳进行比较。
具体代码示例如下:
public class LogPair implements WritableComparable<LogPair> {
private Text userIP = new Text();//用户IP
private Text timestamp = new Text();//时间戳
private Text request = new Text();//请求页面
private IntWritable responseSize = new IntWritable();//请求页面大小
private IntWritable status = new IntWritable();//状态码
public Text getUserIP() {
return userIP;
}
public void setUserIP(Text userIP) {
this.userIP = userIP;
}
public Text getTimestamp() {