如何用hadoopMap减少整个文件

k5hmc34c  于 2021-05-30  发布在  Hadoop
关注(0)|答案(1)|浏览(307)

我已经讨论过各种streamin map reduce字数示例,其中hadoop/hbase似乎要获取一个大文件,并在节点之间平均地打断它(在换行符处)。然后它将部分文档的每一行提交到代码的map部分。我的问题是,当我有很多小的非结构化和半结构化文档时,如何让hadoop将整个文档提交给我的map代码?

kuarbcqp

kuarbcqp1#

文件分割由inputformat.getsplits计算。因此,对于每个输入文件,它会获得拆分的数量,并且每个拆分都会提交给Map器。现在基于inputformatMap器将处理输入拆分。
我们有不同类型的输入格式,例如textinputformat,它将文本文件作为输入,对于每个分割,它提供行偏移量作为键,整行作为值到mapper中的map方法。其他输入格式也是如此。
现在如果你有很多小文件,假设每个文件都小于块大小。然后每个文件将被提供给不同的Map器。如果文件大小超过块大小,那么它将被分为两个块并在两个块上执行。
考虑一个例子,其中每个输入文件都是1mb,并且您有64个这样的文件。还假设块大小为64mb。
现在,每个文件将有64个Map器启动。
假设你有100 mb的文件,你有两个这样的文件。
现在你的100MB文件将被分割成64mb+36mb,4个Map器将被启动。

相关问题