使用MapReduce将JSON数据进行分类
数据
需求:将数据按照性别和文理科进行分类存储
因为要将json字符串转换成对象,所以需要fastjson.jar包
自定义对象
自定义一个对象来存储数据
import org.apache.hadoop.io.WritableComparable;
import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;
public class Students implements WritableComparable<Students> {
//分别定义id、姓名、年龄、性别、班级属性
private long id;
private String name;
private int age;
private String sex;
private String className;
//按照id排序
public int compareTo(Students o) {
return (int) (o.id - this.id);
}
//进行序列化操作
public void write(DataOutput dataOutput) throws IOException {
dataOutput.writeLong(id);
dataOutput.writeUTF(name);
dataOutput.writeInt(age);
dataOutput.writeUTF(sex);
dataOutput.writeUTF(className);
}
//进行反序列化操作
public void readFields(DataInput dataInput) throws IOException {
id = dataInput.readLong();
name = dataInput.readUTF();
age = dataInput.readInt();
sex = dataInput.readUTF();
className = dataInput.readUTF();
}
//自定义set方法,为对象进行赋值
public void set(long id, String name, int age, String sex, String className) {
this.id = id;
this.name = name;
this.age = age;
this.sex = sex;
this.className = className;
}
@Override
public String toString() {
return id + "," + name + "," + age + "," + sex + "," + className;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this