我在 hadoop Web UI 上看到了这个关于地图任务的信息
Total Length = 67108863
Input split[0]:
Length = 48334
Locations:
-----------------------
Input split[1]:
Length = 48334
Locations:
-----------------------
Input split[2]:
Length = 48304
Locations:
...
-----------------------
Input split[2010]:
Length = 23388
Locations:
-----------------------
Input split[2011]:
Length = 23383
Locations:
-----------------------
我正在使用 pig,我知道 pig 将小输入文件组合到 pig.maxCombinedSplitSize 以提高效率
好的......但在我看来,猪执行引擎按所有输入文件的大小“排序”并将它们组合成 64mb 块以执行映射任务。
而且我认为这会导致一个很大的问题,因为我目前有数百万个测试数据文件和数亿个文件在真实服务器中,因为当时系统开发人员没有考虑使用hadoop的可能性。
没有办法在真实服务器中组合小输入文件,所以我必须以某种方式使用 PIG 来解决。我认为排序过程是绝对不必要的,应该删除。所以我现在试图找到该过程在 PIG 源代码中存在的位置,但很难做到这一点。
有谁知道为什么 PIG 在组合时对小输入文件进行排序,以及源代码的那部分在哪里?