如果我有很多小文件(~HDFS块大小)与几个大文件相比,它会对作业生成的地图任务数量产生影响
答案 0 :(得分:3)
它取决于您使用的InputFormat
,因为这决定了输入拆分计算,从而决定了地图任务的数量。
如果你使用默认的TextInputFormat
,每个文件至少会有1个分割,所以每个文件至少有1个映射器,即使这些文件只有几KB,每个映射器做的工作也很少,但是这个介绍Map / Reduce框架的大量开销。如果你保证这些“小”文件接近块大小,那可能并不重要。
如果您无法控制文件并且它们可能变得非常小,我建议使用另一个InputFormat
名为CombineFileInputFormat
的{{1}},它将多个输入文件组合在同一个分割中,无论文件数量多少,这种情况都只取决于整体数据量。可以找到实施here。