hive中的小文件问题

Posted songyuejie

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hive中的小文件问题相关的知识,希望对你有一定的参考价值。

小文件问题
原因:

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

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

以上是关于hive中的小文件问题的主要内容,如果未能解决你的问题,请参考以下文章

Hive上的小文件的性能问题

如何合并 sparksql 保存在 hive 上的小文件?

大数据之Hive:hive的小文件如何处理

Hive任务优化—— 小文件合并相关参数

Hive优化之小文件问题及其解决方案

Hive小文件问题:如何产生造成影响解放办法