(http://youzitool.com 新博客,歡迎訪問)
這幾天一直在忙着找暑假實習,實在沒精力來寫新的文章。剛好這幾天放假,我把前幾天做了的另一個例子拿出來跟大家分享一下。
這個例子是使用hadoop來實現TF-IDF。
TF-IDF(term frequency–inverse document frequency)是一種用於資訊檢索與資訊探勘的常用加權技術。具體的信息就麻煩大家自己百度一下了。
因爲要實現的細節比較多,所以我直接將代碼放上來。大家可以參看代碼裏面的註釋,我寫的比較詳細。
我採用了兩個MapReduce任務順序執行來實現TF-IDF功能。
最後,我再針對此代碼補充幾點。
1:因爲hadoop對處理小文件的效率比較低,如果需要處理很多小文件,我推薦大家可以將很多小文件合併成一個SequenceFile,用文件名作爲key,內容作爲value。然後處理SequenceFile文件,提高效率
2: 本代碼中還有很多可以改進的地方。比如:本代碼的最後輸出包含了很多中間數據,大家可以根據自己的需要刪除不需要的數據。
本代碼是根據輸入的文件數來確定ReduceTask數和最後的文件輸出數,大家也可以自己修改。最後文件的輸出內容也是無序的,如果大家需要可以參看本博的另一篇博文(http://blog.csdn.net/jackydai987/archive/2011/03/12/6244725.aspx)進行多文件輸出。
3:本文只是提供一個簡單的思路,如果代碼中有什麼不對的地方請各位大大不要見笑,和給偶提出來,在下感激不盡。