码迷,mamicode.com
首页 > 其他好文 > 详细

hive中的小文件问题

时间:2020-04-19 13:17:44      阅读:89      评论:0      收藏:0      [点我收藏+]

标签:字段   解决   文件   原因   动态   指定   解决方案   检测   mapper   

小文件问题
原因:

① 众所周知,小文件在HDFS中存储本身就会占用过多的内存空间,那么对于MR查询过程中过多的小文件又会造成启动过多的Mapper Task, 每个Mapper都是一个后台线程,会占用JVM的空间。
② 在Hive中,动态分区会造成在插入数据过程中,生成过多零碎的小文件。
③ 不合理的Reducer Task数量的设置也会造成小文件的生成,因为最终。Reducer是将数据落地到HDFS中的。
④ Hive中分桶表的设置。

解决方案:
① 在数据源头HDFS中控制小文件产生的个数,比如采用Sequencefile作为表存储格式,不要用textfile,在一定程度上可以减少小文件(常见于在流计算的时候采用Sequencefile格式进行存储)。
② 减少reduce的数量(可以使用参数进行控制)。
③ 慎重使用动态分区,最好在分区中指定分区字段的val值。
④ 做好数据的校验工作,比如通过脚本方式检测hive表的文件数量,并进行文件合并。
⑤ 合并多个文件数据到一个文件中,重新构建表。

hive中的小文件问题

标签:字段   解决   文件   原因   动态   指定   解决方案   检测   mapper   

原文地址:https://www.cnblogs.com/songyuejie/p/12730928.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!