这几天一直在忙着找暑假实习,实在没精力来写新的文章。刚好这几天放假,我把前几天做了的另一个例子拿出来跟大家分享一下。
这个例子是使用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:本文只是提供一个简单的思路,如果代码中有什么不对的地方请各位大大不要见笑,和给偶提出来,在下感激不尽。
评论