本文共 542 字,大约阅读时间需要 1 分钟。
框架默认的TextInputFormat切片机制是对任务按文件规划切片,不管文件多小,都会是一个单独的切片,都会交给一个MapTask,这样如果有大量小文件,就会产生大量的MapTask,处理效率极其低下。
1、应用场景:
CombineTextInputFormat用于小文件过多的场景,它可以将多个小文件从逻辑上规划到一个切片中,这样,多个小文件就可以交给一个MapTask处理。
2、虚拟存储切片最大值设置
CombineTextInputFormat.setMaxInputSplitSize(job, 4194304);// 4m
注意:虚拟存储切片最大值设置最好根据实际的小文件大小情况来设置具体的值。
3、切片机制
生成切片过程包括:虚拟存储过程和切片过程二部分。
除了combine这种方法环节处理大量小文件的问题,还有一种方法是使用顺序文件将小文件合并,将文件名作为键,文件内容作为值。
图解如下:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wGHGNMhT-1603113714780)(https://s1.ax1x.com/2020/10/14/0IDeu6.png)]
转载地址:http://bicki.baihongyu.com/