我的 Hadoop 程序的输入是一组小文件(10 个文件,每个大小为 60MB),我运行 100 个映射器。我假设每个映射器的输入数据仅来自一个文件。也就是说,不存在输入数据跨越两个(或更多)文件的映射器。这是一个正确的假设吗?
问问题
113 次
2 回答
2
是的。你是对的。您还可以使用 CombineFileInputFormat 在单个映射器调用中访问多个文件的内容。
顺便说一句,您可以查看映射器任务 ID,它由映射器正在读取的文件的名称(以及其他内容)组成。
于 2013-10-28T18:34:07.580 回答
1
我的 Hadoop 程序的输入是一组小文件(10 个文件,每个大小为 60MB),我运行 100 个映射器。
映射器的总数无法明确控制。映射器的总数等于块的数量。所以,不确定I run 100 mappers
的意思。
我假设每个映射器的输入数据仅来自一个文件。
映射器处理一个数据块,一个文件可以根据数据的大小分成 1 个或 1+ 个块。
也就是说,不存在输入数据跨越两个(或更多)文件的映射器。
通过使用CombineFileInputFormat,单个映射器将能够处理多个文件。
于 2013-10-28T18:56:46.087 回答