2013-10-28 52 views
0

我的Hadoop程序的输入是一组小文件(10个文件,每个大小为60MB),我运行100个映射器。我假设每个映射器的输入数据只来自一个文件。也就是说,没有映射器的输入数据跨越两个(或更多)文件。这是一个正确的假设吗?如何将数据提供给Hadoop中的映射器?

回答

2

是的。你是对的。您还可以使用CombineFileInputFormat在单个映射器调用中访问来自多个文件的内容。

顺便说一下,您可以查看映射器任务ID,该映射器任务ID由映射器读取的文件名称(以及其他内容)组成。

1

我的Hadoop程序的输入是一组小文件(10个文件,每个大小为60MB),我运行100个映射器。

映射器的总数不能被明确控制。映射器的总数等于块的数量。所以,不知道I run 100 mappers的意思。

我假设每个映射器的输入数据只来自一个文件。

映射器处理一个数据块,根据数据的大小可以将一个文件分成1或1+个块。

也就是说,没有映射器的输入数据跨越两个(或更多)文件。

通过使用CombineFileInputFormat,一个映射器将能够处理多个文件。

相关问题