千家信息网

如何使用Hive合并小文件

发表于:2025-02-04 作者:千家信息网编辑
千家信息网最后更新 2025年02月04日,如何使用Hive合并小文件,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。问题背景目前集群存于一个非常不健康的状态,主要问题是小文件太
千家信息网最后更新 2025年02月04日如何使用Hive合并小文件

如何使用Hive合并小文件,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

问题背景

目前集群存于一个非常不健康的状态,主要问题是小文件太多,单个DataNode的block数量阈值是500,000,而现在单个DataNode的block为2,631,218,约为阈值的5倍,现在所有DataNode都处于黄色不健康状态。

小文件问题会直接带来NameNode的压力巨大,从而导致HDFS的稳定性,同时对HDFS日常的数据读写带来性能下降。目前已可以看到集群的NameNode频繁出现检查点告警问题。

通过对集群中目前目录个数,文件大小,文件数量,Hive表数量,Hive数据库数量,Hive分区数量进行了详细的数据采集。发现主要是HDFS目录中的小文件太多,大量1KB的文件,甚至是小于1KB的文件;具体表现为:不论表与分区的数据量大小,当有分区时每个分区具有200个文件,当没有分区时每个表有200个文件,而许多表是小表,所以造成严重的小文件问题。

解决此问题的方法主要为两个方面;一是从源头解决小文件问题,在导数的过程中对作业进行优化,以减少小文件的输出,此方法需要业务方解决;二是合并平台上已有的小文件;本问描写合并平台小文件的方案。

原表情况

通过对集群内的文件数量以及文件大小进行分析,小文件问题基本出现在hive表中;经过近一步分析,发现每个分区存在着200个小文件,可以将这些文件合并减少小文件数量从而缓解小文件问题。

示例表test_part一共20行数据,以字段date_str为分区

共有五个分区

每个分区分别四个文件

执行流程

执行流程总体如下:

1、使用create table name like tb_name创建备用表,使得表结构保持一致;

2、配置支持merge等参数,并使用insert overwrite语句读取原表数据插入到备用表。

3、确认表数据一致后,删除原表,使用alter语句将备用表的表名修改为原表的表名。

方案描述

新建备表,表结构与原表保持一致

create table test_part_bak like test_part; 

设置如下参数,使支持合并

SET hive.merge.mapfiles = true;
SET hive.merge.mapredfiles = true;
SET hive.merge.size.per.task = 256000000;
SET hive.merge.smallfiles.avgsize = 134217728;
SET hive.exec.compress.output = true;
SET parquet.compression = snappy;
SET hive.exec.dynamic.partition.mode = nonstrict;
SET hive.exec.dynamic.partition = true;

使用insert overwrite语句查询原表数据覆盖备表

insert overwrite table test_part_bak partition(date_str) select * from test_part;

备用表数据和原表一致

删除原表,将备用表表名修改为原表名

alter table test_part_bak rename to test_part;

合并后表数据没有变化

表结构一致

从HDFS文件系统可以看出,分区数量没有改变,每个分区的几个小文件已经合并为一个文件。

关于如何使用Hive合并小文件问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。

文件 问题 数据 数量 一致 备用 大小 结构 语句 集群 分析 健康 单个 参数 平台 方案 方法 更多 流程 状态 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 数据库技术课程思政教学设计 怎么搞国外的服务器 计算机软件开发考试考什么 山东政法学院网络安全学院 微软技术丛书 快速软件开发 全球电子元器件数据库 互联网传统科技 中国工商银行软件开发中心岗位 查看服务器任务管理器 发型软件开发价格 互联网银行科技创新 宝鸡大学生网络安全知识 长春的软件开发 程序员所说的数据库 南宁科技职业学院计算机网络技术 美发软件开发 邮件发送服务器 智能时代科技和网络安全博览会 互联网科技平台汇承比较安全 华中科技大学网络技术学院 雅虎网络安全小组 服务器管理器远程桌面是红色 qt服务器怎么部署 中华人民共和国网络安全监 it软件开发点击了解更多 网络安全专业可以报考什么证 查看服务器任务管理器 成都网络软件开发培训学校 字段互联网杭州科技有限公司 4S店金税盘的代理服务器是什么
0