我正在使用CompositeInputFormat为hadoop作业提供输入。
生成的拆分数是作为CompositeInputFormat(用于加入)的输入而给出的文件总数。
作业完全忽略了块大小和最大分割大小(从CompositeInputFormat获取输入时)。这导致长时间运行的Map Tasks,并且由于输入文件大于块大小而使系统变慢。
是否有人知道可以通过哪种方式管理CompositeInputFormat的拆分数量?
答案 0 :(得分:6)
不幸的是,CompositeInputFormat必须忽略块/拆分大小。在CompositeInputFormat中,输入文件需要进行相同的排序和分区...因此,Hadoop无法确定在何处拆分文件以维护此属性。它无法确定拆分文件的位置以保持文件有条理。
解决此问题的唯一方法是手动拆分文件并将其分区为较小的拆分。您可以通过mapreduce作业(可能只是身份映射器和身份缩减器)传递数据,并使用更多的Reducer。请务必使用相同数量的reducer传递两个数据集。