Hadoop文件拆分:CompositeInputFormat:内部联接

时间:2011-12-28 09:42:17

标签: hadoop split mapreduce dfs

我正在使用CompositeInputFormat为hadoop作业提供输入。

生成的拆分数是作为CompositeInputFormat(用于加入)的输入而给出的文件总数。

作业完全忽略了块大小和最大分割大小(从CompositeInputFormat获取输入时)。这导致长时间运行的Map Tasks,并且由于输入文件大于块大小而使系统变慢。

是否有人知道可以通过哪种方式管理CompositeInputFormat的拆分数量?

1 个答案:

答案 0 :(得分:6)

不幸的是,CompositeInputFormat必须忽略块/拆分大小。在CompositeInputFormat中,输入文件需要进行相同的排序和分区...因此,Hadoop无法确定在何处拆分文件以维护此属性。它无法确定拆分文件的位置以保持文件有条理。

解决此问题的唯一方法是手动拆分文件并将其分区为较小的拆分。您可以通过mapreduce作业(可能只是身份映射器和身份缩减器)传递数据,并使用更多的Reducer。请务必使用相同数量的reducer传递两个数据集。