首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Apache Hadoop处理大量文本文件

问使用Apache Hadoop处理大量文本文件
EN

Stack Overflow用户
提问于 2017-09-01 03:26:37
回答 1查看 171关注 0票数 0

我有非常多的文本文件,总大小为1 TB。比方说,我必须对每个文件执行字数统计,并希望单独存储每个文件的结果。Apache Hadoop是这类问题的正确解决方案吗?每个文件的大小为5 MB。我不能连接这些文件,因为我想单独查看每个文件的字数统计结果。我希望Hadoop所做的是将每个文件作为输入提供给映射器,并在reducer中为其生成单独的输出文件。

EN

回答 1

Stack Overflow用户

发布于 2017-09-02 01:08:50

看看这里的WholeFileInputFormat.java和WholeFileRecordReader.java - https://github.com/tomwhite/hadoop-book/tree/master/ch08-mr-types/src/main/java,这将帮助你将一个文件的内容作为一个记录来阅读。我认为您可能需要稍微调整一下InputFormat和RecordReader,才能将filename作为关键字发出。

在普通的map-reduce中,我认为这将是一个只有Map的任务,其中每个map任务负责计算记录中不同的单词(这是文件的全部内容)。您可以直接存储这些map任务的输出,这将为您提供单个文件的字数统计。

我相信您正在将您的用例与标准的word count map reduce应用程序进行比较,在该应用程序中,reducer用于计算所有输入(在您的情况下是所有文件)中的单词。你不打算这样做,因此我说你不会在这里减少。

我不确定使用reducer来计算单个文件中的单词是否是一个好主意。

另一种选择是使用上面提到的输入格式和记录阅读器,并在map-reduce之上使用Cascading或Apache Pig或一些高级抽象来简化您的工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45988755

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档