Hive合并小文件

通过sql进行合并:

1、concatenate方法:

对于非分区表:alter table tablename concatenate

对于分区表:alter table partition(dt=20231201) concatenate

使用方便,但只适用于rcfile和orc文件类型,需要执行多次才能把文件合并成一个

2、insert overwriter方法

支持所有数据类型,但是select 后面要把所有字段拼起来,如果使用*,由于带有dt字段,无法写入新的分区。

3、insert overwrite table tablename select * 用法

从select * 中去掉一列(address)的方法:

insert overwriter table tablename select '(address)?+.+'from test

想合并成一个文件,分区字段必须去掉。

也可以通过参数合并

在map输入的时候合并小文件:

-- 每个Map最大输入大小,决定合并后的文件数

set mapred.max.split.size=256000000;

-- 一个节点上split的至少的大小 ,决定了多个data node上的文件是否需要合并

set mapred.min.split.size.per.node=100000000;

-- 一个交换机下split的至少的大小,决定了多个交换机上的文件是否需要合并

set mapred.min.split.size.per.rack=100000000;

-- 执行Map前进行小文件合并

set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat;

在reduce输出的的时候合并小文件:

-- 在map-only job后合并文件,默认true

set hive.merge.mapfiles = true;

-- 在map-reduce job后合并文件,默认false

set hive.merge.mapredfiles = true;

-- 合并后每个文件的大小,默认256000000

set hive.merge.size.per.task = 256000000;

-- 平均文件大小,是决定是否执行合并操作的阈值,默认16000000

set hive.merge.smallfiles.avgsize = 100000000;

相关推荐
小邓睡不饱耶1 天前
Hadoop 3.x 企业级实战指南:从纠删码到云原生容器化
大数据·hadoop·云原生
makabalala2 天前
如何利用YashanDB进行数据仓库构建
数据仓库
禅与计算机程序设计艺术2 天前
了解NoSQL的数据仓库和ETL
数据库·数据仓库·nosql·etl
好学且牛逼的马2 天前
从“配置地狱“到“云原生时代“:Spring Boot 1.x到4.x演进全记录与核心知识点详解
hive·spring boot·云原生
派可数据BI可视化3 天前
一文读懂系列:数据仓库为什么分层,分几层?数仓建模方法有哪些
大数据·数据仓库·信息可视化·spark·商业智能bi
Light603 天前
不止于名:领码 SPARK 如何“链”动数据仓库、数据湖、中台与湖仓一体新纪元
大数据·数据仓库·数据湖·ipaas·湖仓一体·数据中台·领码 spark
郑小憨3 天前
FlinkSQL窗口函数TUMBLE、SESSION 和 HOP的区别
大数据·数据仓库·sql·flink·database
码字的字节3 天前
锚点模型:数据仓库中的高度可扩展建模技术详解
大数据·数据仓库·spark
Agentic AI人工智能与大数据3 天前
大数据领域数据仓库的ETL任务优化
大数据·数据仓库·ai·etl