hive 小文件合并

Hive 支持在 MR 任务结束之后,再另起一轮 MR 作业进行小文件的合并。这轮作业只会有 mapper, 没有 reducer. 每个 mapper 根据参数读入若干文件并输出成一个文件,从而达到文件合并的效果

 

与 mergefile 有关的参数有以下:

参数
说明
当前默认值
hive.merge.mapfiles 在只有 mapper 阶段的任务结束后进行合并 true
hive.merge.mapredfiles 在有 reducer 阶段的任务结束后进行合并 false
hive.merge.size.per.task 每个 task 最终输出的文件大小 256M

hive.merge.smallfiles.avgsize

进行文件合并的条件。当任务执行完之后输出的文件平均大小小于该参数,则 hive 会启动文件合并任务 16M

如若需要开启合并参数,只需要 set hive.merge.mapredfiles=true; 即可

 

注意:合并的任务是会算在 原作业 的 Stage 中的。比如,某个 SQL 生成的 MR 有 3 轮,则开启合并参数后会变成 4 轮

合并文件这轮任务的开销基本会在 10 分钟之内完成。对于有严格 SLA 要求的 ETL 可以考虑是否开启

你可能感兴趣的:(hive)