文件顯示:
每行依次是 ~手機號
~上行流量
~下行流量
需求分析:
需要統計各自的手機號,及上行、下行、總流量
具體做法:
1.定義
map輸入輸出型別
通常情況下map的輸入
的key-value就是
longwritable,text
我們知道map讀取的過程為:
讀一行返回乙個key-value對,每呼叫一行就執行一次
map方法。而輸出
value應該是每行的上行流量和下行流量以及總流量,我們想到了物件。輸出value可以為
bean
類----在mr
程式中,可以使用自定義的型別作為
mr的輸出資料型別,但是前提是實現hadoop的
writable
序列化機制
2.建立
bean
類---
2.1定義屬性(注意:long型別)
自行通過setget / lambok+data註解 使用屬性
2.2構造方法
2.3重寫序列化
write
和反序列化方法
序列化
反序列化(注意:先序列化的先反序列化)
3.map階段
應該是手機號作為key,上行流量
+下行流量作為
value
小技巧:
1.如果
line
中間資料有丟失,可以正著
+倒著配合獲取字段)
2.構造函式引數和中間設定要機靈點兒哦
3.1map完成
3.2.但是由於每次呼叫
map方法都需要
new,這樣會增大垃圾**量,所以優化提前
new出所需物件,整個過程只需要重新
set。
4.reduce階段
map的輸出為
reduce
的輸入,設定統計引數
5.job階段
job相當於是模板方法,大量**都是一致的。所以我們可以找到之前的
mapreduce
的方法進行 黏貼修改**、重新導包 即可。
6.重寫
tostring
避免輸出檔案中是物件不便於觀察
接下來我們可以在本地跑一下,拍桌子散夥!
-------補作業了!
MapReduce案例 統計手機號總流量
map方法和reduce方法都是迴圈呼叫的 map方法 每行資料呼叫一次 reduce方法 每個kv呼叫一次 只執行一次的 寫在setup和cleanup中 資料格式 1363157985066 13726230503 00 fd 07 a4 72 b8 cmcc 120.196.100.82 i0...
手機號判斷
public class smsutil toast.maketext activity,手機號碼輸入有誤!toast.length short show return false 驗證手機格式 public static boolean ismobileno string mobilenums 1...
手機號隱藏
多的不說,直接上demo string phone 12345678983 phone.replaceall d d d 1 2 利用string自帶的replaceall方法進行替換達到隱藏效果,此方法的第乙個引數為分組正規表示式 引數注釋 按照上面demo中替換後的手機號為 123 983 注意...