合法的身份證:? 18位, 前17位數(shù)字,第18位是數(shù)字或者X, 第7-10位時年<=2024, 第8-9是月份,第10-11是日期
1、傳輸文件
(1)通過手動編輯。創(chuàng)建文件,通過(hadoop fs -put datasource.txt /)傳送
編輯
編輯
(2)通過fz傳遞
(3)通過郵箱傳遞
2、創(chuàng)建Map類
(1)創(chuàng)建idMapper,確定輸入、輸出鍵值類型
輸入鍵采用Object類型、值為Text,輸出鍵Text,值Nullwritable
(此次只用考慮鍵,不用考慮值)
編輯
(2)重寫map,刪除不必要語句;同時判斷是否合法,合法輸出
編輯
(3)將身份賬號以行進行切割,存入數(shù)組,進行判斷
編輯
3、創(chuàng)建reduce類
(1)創(chuàng)建reduce類,確定輸入,輸出鍵值類型;同時,重寫reducer
以map輸出作為輸入
編輯
4、書寫判斷是否合法的方法
源文件:
編輯
(1)去重(不增加代碼)
編輯
(2)身份證號長是否為18位編輯
查看:
編輯
(3)前17位是否是數(shù)字
使用Character.isDigit(),傳入的字符是一個數(shù)字字符(0-9),也可使用數(shù)組+for循環(huán)判斷
不是數(shù)字字符返回false
編輯
查看:
編輯
(4)檢查第18位(是不是數(shù)字或者X)
編輯
查看:
編輯
(5)截取判斷第7-10位時年<=2024, 第8-9是月份,第10-11日期是否合理
編輯
查看:
編輯
五、實驗結(jié)果與分析