【大数据之Hive】二十五、HQL语法优化之小文件合并

1 优化说明

小文件优化可以从两个方面解决,在Map端输入的小文件合并,在Reduce端输出的小文件合并。

1.1 Map端输入文件合并

合并Map端输入的小文件是指将多个小文件分到同一个切片中,由一个Map Task处理,防止单个小文件启动一个Map Task,造成资源浪费。

相关参数:

sql 复制代码
--将多个小文件切片合成一个切片,由一个map task处理
set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat;

1.2 Reduce输出文件合并

合并Reduce端输出的小文件是指将多个小文件合并成大文件,减少HDFS小文件数量。

原理:

根据计算任务输出文件的平均大小判断,若符合条件则单独启动一个额外的任务进行合并。

相关参数:

sql 复制代码
--开启合并map only任务输出的小文件,针对只有map的计算任务
set hive.merge.mapfiles=true;

--开启合并map reduce任务输出的小文件
set hive.merge.mapredfiles=true;

--合并后的文件大小
set hive.merge.size.per.task=256000000;

--触发小文件合并任务的阈值,若某计算任务输出的文件平均大小低于该值,则触发合并
set hive.merge.smallfiles.avgsize=16000000;

2 案例

1、示例SQL语句

sql 复制代码
--计算各省份订单金额总和,下表为结果表
drop table if exists order_amount_by_province;
create table order_amount_by_province(
    provonce_id string comment '省份id',
    order_amount decimal(16,2) comment '订单金额'
)
location '/order_amount_by_province';

insert overwrite table order_amount_by_province
select
    province_id,
    sum(total_amount)
from order_detail
group by province_id;

2、优化前

根据任务并行度,在默认情况下,该sql语句的Reduce端并行度为5,所以最终输出的文件个数也为5,且均为小文件。

3、优化思路
方案一、合理设置任务的Reduce端并行度

将任务并行度设置为1,保证输出结果为1个文件。

sql 复制代码
set mapreduce.job.reduces=1;

方案二、启用HIve合并小文件进行优化

设置参数:

sql 复制代码
--开启合并map reduce任务输出的小文件
set hive.merge.mapredfiles=true;

--合并后的文件大小
set hive.merge.size.per.task=256000000;

--触发小文件合并任务的阈值,若某计算任务输出的文件平均大小低于该值,则触发合并
set hive.merge.smallfiles.avgsize=16000000;
相关推荐
2501_9336707927 分钟前
2026 高职大数据专业考什么证书对就业有帮助?
大数据
xiaobaibai15336 分钟前
营销自动化终极形态:AdAgent 自主闭环工作流全解析
大数据·人工智能·自动化
星辰_mya44 分钟前
Elasticsearch更新了分词器之后
大数据·elasticsearch·搜索引擎
xiaobaibai1531 小时前
决策引擎深度拆解:AdAgent 用 CoT+RL 实现营销自主化决策
大数据·人工智能
悟纤1 小时前
学习与专注音乐流派 (Study & Focus Music):AI 音乐创作终极指南 | Suno高级篇 | 第33篇
大数据·人工智能·深度学习·学习·suno·suno api
ESBK20251 小时前
第四届移动互联网、云计算与信息安全国际会议(MICCIS 2026)二轮征稿启动,诚邀全球学者共赴学术盛宴
大数据·网络·物联网·网络安全·云计算·密码学·信息与通信
Elastic 中国社区官方博客1 小时前
Elasticsearch:Workflows 介绍 - 9.3
大数据·数据库·人工智能·elasticsearch·ai·全文检索
B站_计算机毕业设计之家1 小时前
豆瓣电影推荐系统 | Python Django Echarts构建个性化影视推荐平台 大数据 毕业设计源码 (建议收藏)✅
大数据·python·机器学习·django·毕业设计·echarts·推荐算法
莽撞的大地瓜2 小时前
洞察,始于一目了然——让舆情数据自己“说话”
大数据·网络·数据分析
证榜样呀2 小时前
2026 中专大数据技术专业可考的证书有哪些,必看!
大数据·sql