测试数据:20GB gz数据,文件数4.7万个,大小从上百MB到几MB
测试机器:Slave 2台。8core,32GB内存,5 map slot,3 reduce slot
Job逻辑:输出文件总行数
- 使用Pig耗时:12mins
- java代码(FileInputFormat):>60 min (开启jvm重用,使用默认FileInputFormat)
- java代码(CombineFileInputFormat):21 min
结论:Pig对于处理小文件做了优化,性能远远好于Java编写代码。
关于PigInputFormat
- 默认使用集群配置block size来合并小文件,并作为input split传给map方法
- 时间input split 167个,远远小于Java编写代码( FileInputFormat )的4.7个input splits
-- end