1. 程式人生 > >Hadoop自定義讀取檔案

Hadoop自定義讀取檔案

今天從網上看到點資料,很適合用MapReduce來分析一下。一條記錄的格式如下:

[**] [1:538:15] NETBIOS SMB IPC$ unicode share access [**]
[Classification: Generic Protocol Command Decode] [Priority: 3]
09/04-17:53:56.363811 168.150.177.165:1051 -> 168.150.177.166:139
TCP TTL:128 TOS:0x0 ID:4000 IpLen:20 DgmLen:138 DF
***AP*** Seq: 0x2E589B8  Ack: 0x642D47F9  Win: 0x4241  TcpLen: 20

[**] [1:1917:6] SCAN UPnP service discover attempt [**]
[Classification: Detection of a Network Scan] [Priority: 3]
09/04-17:53:56.385573 168.150.177.164:1032 -> 239.255.255.250:1900
UDP TTL:1 TOS:0x0 ID:80 IpLen:20 DgmLen:161
Len: 133

大家可以看到要處理上面的記錄,肯定不能用系統預設的TextInputFormat.class

所以要自己寫一個讀取類,從上面的格式可以看出。每一條記錄由換行符分割,其餘的行為一條記錄(包括多行)。閒話少說,直接上程式碼:

通過上面的類,就可以將4行連線為一條記錄。換行符作為一條記錄的結束。