更新時間:2023年02月13日15時02分 來源:傳智教育 瀏覽次數(shù):
在收集的日志文件中,通常情況下,不能直接將日志文件進(jìn)行數(shù)據(jù)分析,這是因為日志文件中有許多不合法的數(shù)據(jù),如以下兩條數(shù)據(jù):
58.215.204.118 -- [18/Sep/2013:06:52:33 +0000] -400 0 -- 101.226.68.137 -- [18/Sep/2013:06:52:36 +0000]HEAD/HTTP/1.1 200 20 - DNSPod-Monitor/1.0
上述日志數(shù)據(jù)在網(wǎng)絡(luò)傳輸時發(fā)生了數(shù)據(jù)丟失,針對這種數(shù)據(jù)需要將其過濾去除,數(shù)據(jù)預(yù)處理流程如圖11-3所示。
從圖11-3可以看出,數(shù)據(jù)預(yù)處理階段主要是過濾不合法的數(shù)據(jù),清洗出無意義的數(shù)據(jù)信息,并且將原始日志中的數(shù)據(jù)格式轉(zhuǎn)換成利于后續(xù)數(shù)據(jù)分析時規(guī)范的格式,根據(jù)統(tǒng)計需求,篩選出不同主題的數(shù)據(jù)。
圖11-3 數(shù)據(jù)預(yù)處理流程
在數(shù)據(jù)預(yù)處理階段,主要目的就是對收集的原始數(shù)據(jù)進(jìn)行清洗和篩選,因此使用前面學(xué)習(xí)的MapReduce技術(shù)就可以輕松實現(xiàn)。在實際開發(fā)中,數(shù)據(jù)預(yù)處理過程通常不會直接將不合法的數(shù)據(jù)直接刪除,而是對每條數(shù)據(jù)添加標(biāo)識字段,從而避免其他業(yè)務(wù)使用時丟失數(shù)據(jù)。
另外,此次數(shù)據(jù)預(yù)處理只是清洗和篩選不合法的數(shù)據(jù)信息,會讀取每行日志文件數(shù)據(jù)并最終輸出一條數(shù)據(jù),不會進(jìn)行其他操作,因此在使用MapReduce技術(shù)進(jìn)行處理過程中,只會涉及Map階段,不會涉及Reduce階段。在默認(rèn)情況下,ReduceTask值為1,因此在主運行函數(shù)中,需要設(shè)置Job.setNumReduceTasks(0)。