如何让Pig将多个文件提供到一个映射器中

时间:2013-07-09 18:15:56

标签: hadoop mapreduce hdfs apache-pig

是否可以让Pig使用一个映射器处理几个小文件(假设这样做会提高作业的速度)。我们遇到一个问题,hdfs中存在数千个小文件,而pig会创建数百个映射器。 Pig是否提供了解决此问题的简单(完整或部分)解决方案?

2 个答案:

答案 0 :(得分:1)

您可以利用这些属性将这些多个文件合并到一个文件中,以便它们由单个地图处理:

  • pig.maxCombinedSplitSize - 指定单个地图要处理的数据的大小(以字节为单位)。组合较小的文件,直到达到此大小。
  • pig.splitCombination - 打开或关闭合并拆分文件(默认设置为“true”)。

此功能适用于PigStorage,无需编写任何自定义加载程序。有关详细信息,请访问here

HTH

答案 1 :(得分:1)

Hadoop中包含大量小文件的常见方法是将它们聚合为大型序列或Avro文件,而不是使用相应的存储功能来读取它们。 对于Pig和Avro,请查看AvroStorage