用apachehadoop处理大量文本文件

krcsximq  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(483)

我有一个非常大的文本文件与1 tb的大小总和数量。比方说,我必须对每个文件执行字数计算,并希望分别存储每个文件的结果。apachehadoop是解决这类问题的正确方法吗?每个文件的大小为5 mb。我无法连接这些文件,因为我想分别查看每个文件的字数结果。我想要hadoop做的是将每个文件作为输入提供给Map器,并在reducer处为其生成一个单独的输出文件。

yeotifhr

yeotifhr1#

看一看这个 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用于计算所有输入(在您的示例中是所有文件)中的单词数。你不打算这样做,所以我说你不会在这里。
我不确定使用减速机来计算单个文件中的字数是否是个好主意。
另一种选择是使用上面提到的inputformat和recordreader,并使用级联或apachepig或map reduce之上的一些高级抽象来简化您的工作。

相关问题