一、原始数据
文件secondsort.txt,内容如下:
二、代码展示
1、自定义Bean对象封装数据
package com.writablesort2;
import lombok.Getter;
import lombok.Setter;
import org.apache.hadoop.io.WritableComparable;
import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;
@Getter
@Setter
public class FlowBean implements WritableComparable<FlowBean> {
private String id;
private double price;
/**
* 用于反序列化时无参调用
*/
public FlowBean() {
}
/**
* 比较器
* @param o
* @return
*/
@Override
public int compareTo(FlowBean o) {
//将id转换为int类型进行比较
int this_id = Integer.parseInt(this.id);
int o_id = Integer.parseInt(o.id);
//首先比较id,升序
if (this_id > o_id) {
return 1;
} else if (this_id < o_id) {
return -1;
} else {
//当id相同时,比较price,降序
return this.price > o.price ? -1 : 1;
}
}
/**
* 序列化
* @param dataOutput
* @throws IOException
*/
@Override
public void write(DataOutput dataOutput) throws IOException {
dataOutput.writeUTF(this.id);
dataOutput.writeDouble(this.price);
}
/**
* 反序列化,注意顺序与序列化保持一致
* @param dataInput
* @throws IOException
*/
@Override
public void readFields(DataInput dataInput