提前創好一個文件夾分為四個類
FlowBean中的代碼內容為:package org.example.flow;
?
import org.apache.hadoop.io.Writable;
?
import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;
?
//hadoop 序列化
//三個屬性:手機號,上行流量,下行流量
public class FlowBean implements Writable {
? ? private String phone;
? ? private Long upFlow;
? ? private Long downFlow;
?
? ? public FlowBean(String phone, Long upFlow, Long downFlow) {
? ? ? ? this.phone = phone;
? ? ? ? this.upFlow = upFlow;
? ? ? ? this.downFlow = downFlow;
? ? }
? ? //定義get/set方法
? ? public String getPhone() {
? ? ? ? return phone;
? ? }
? ? public void setPhone(String phone) {
? ? ? ? this.phone = phone;
? ? }
? ? public Long getUpFlow() {
? ? ? ? return upFlow;
? ? }
? ? public void setUpFlow(Long upFlow) {
? ? ? ? this.upFlow = upFlow;
? ? }
? ? public Long getDownFlow() {
? ? ? ? return downFlow;
? ? }
? ? public void setDownFlow(Long downFlow) {
? ? ? ? this.downFlow = downFlow;
? ? }
?
? ? //定義無參結構
? ? public FlowBean() {}
? ? //定義一個獲取總流量的方法
? ? public Long getTotalFlow(){
? ? ? ? return upFlow+downFlow;
? ? }
?
? ? @Override
? ? public void write(DataOutput dataOutput) throws IOException {
? ? ? ? dataOutput.writeUTF(phone);
? ? ? ? dataOutput.writeLong(upFlow);
? ? ? ? dataOutput.writeLong(downFlow);
?
? ? }
?
? ? @Override
? ? public void readFields(DataInput dataInput) throws IOException {
? ? ? ? phone = dataInput.readUTF();
? ? ? ? upFlow = dataInput.readLong();
? ? ? ? downFlow = dataInput.readLong();
?
? ? }
}
FlowDriver中的代碼內容為:
注:此為運行代碼
FlowMapper中的代碼內容為:FlowReducer中的代碼內容為:
————————————————
? ? ? ? ? ? ? ? ? ? ? ? ? ? 版權聲明:本文為博主原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
? ? ? ? ? ? ? ? ? ? ? ??
原文鏈接:https://blog.csdn.net/2401_87076452/article/details/147380421