2

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

4

2 回答 2

2

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

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

此功能适用于 PigStorage,无需编写任何自定义加载器。更多信息可以在这里找到。

高温高压

于 2013-07-09T19:17:01.350 回答
1

Hadoop 中具有大量小文件的常用方法是将它们聚合成大型 Sequence 或 Avro 文件,然后使用各自的存储函数来读取它们。对于 Pig 和 Avro,请查看AvroStorage

于 2013-07-11T07:16:34.193 回答