一、序列化
1、进行序列化:dataoutput方法-序列化接口-Writable接口
进行反序列化:datainput方法
2、实例
统计每年的厨房的用电总量、空调的用电总量、洗衣房的用电总量、总的用电量-通过自定义序列化来做
第一步、创建一个序列化对象进行序列化
第二步骤:重写两个方法
ElectricWritable作为mapper的key或者value
创建对象-这个对象就相当于一个载体
第三步:序列化的方法
out.writeDouble(kt);
out.writeDouble(xyf);
out.writeDouble(sum);
第四步:反序列化方法
kf=in.readDouble();
xyf=in.readDouble();
sum=in.readDouble();//总的
String类型是UTF
Double是double类型
39行的datainput in的相当于输出流
如果进行序列化,这个对象必须要有一个无参构造
通过get,set方法进行赋值
最后需要一个toString
最后输入一个对象
主要的是两个方法:序列化方法和反序列化方法
ElectricWritableMapper.java
reducer 接受的是mapper的数据
重写reduce方法
定义变量
其中key是mapper传过来的年
ele是toString来的显示的
最后结果
项目
注:自定义序列化之后是定义mapper
最终结果如下,是按照key来排序-因为我们在写mapper或者reduce的时候输出的key就是年,所以是按照key来排序的