0

我在 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 在组合时对小输入文件进行排序,以及源代码的那部分在哪里?

4

1 回答 1

0

没错,猪按大小对输入文件进行排序-我不确定为什么要这样做。为什么不合并 Hadoop w/o pig 中的文件?此处列出了一些选项:http: //jugnu-life.blogspot.com/2013/01/merging-small-files-in-hadoop.html

于 2013-09-12T09:13:58.787 回答