千家信息网

hive如何增加减少map数

发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,这篇文章主要介绍hive如何增加减少map数,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!如何合并小文件,减少map数?假设一个SQL任务:Select count(1) fr
千家信息网最后更新 2025年02月02日hive如何增加减少map数

这篇文章主要介绍hive如何增加减少map数,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

如何合并小文件,减少map数?
假设一个SQL任务:
Select count(1) from popt_tbaccountcopy_mes where pt = '2012-07-04';
该任务的inputdir /group/p_sdo_data/p_sdo_data_etl/pt/popt_tbaccountcopy_mes/pt=2012-07-04
共有194个文件,其中很多是远远小于128m的小文件,总大小9G,正常执行会用194个map任务。
Map总共消耗的计算资源: SLOTS_MILLIS_MAPS= 623,020

我通过以下方法来在map执行前合并小文件,减少map数:
set mapred.max.split.size=100000000;
set mapred.min.split.size.per.node=100000000;
set mapred.min.split.size.per.rack=100000000;
set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat;
再执行上面的语句,用了74个map任务,map消耗的计算资源:SLOTS_MILLIS_MAPS= 333,500
对于这个简单SQL任务,执行时间上可能差不多,但节省了一半的计算资源。
大概解释一下,100000000表示100M, set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat;这个参数表示执行前进行小文件合并,
前面三个参数确定合并文件块的大小,大于文件块大小128m的,按照128m来分隔,小于128m,大于100m的,按照100m来分隔,把那些小于100m的(包括小文件和分隔大文件剩下的),
进行合并,最终生成了74个块。

如何适当的增加map数?

当input的文件都很大,任务逻辑复杂,map执行非常慢的时候,可以考虑增加Map数,来使得每个map处理的数据量减少,从而提高任务的执行效率。
假设有这样一个任务:
Select data_desc,
count(1),
count(distinct id),
sum(case when …),
sum(case when ...),
sum(…)
from a group by data_desc
如果表a只有一个文件,大小为120M,但包含几千万的记录,如果用1个map去完成这个任务,肯定是比较耗时的,这种情况下,我们要考虑将这一个文件合理的拆分成多个,
这样就可以用多个map任务去完成。
set mapred.reduce.tasks=10;
create table a_1 as
select * from a
distribute by rand(123);

这样会将a表的记录,随机的分散到包含10个文件的a_1表中,再用a_1代替上面sql中的a表,则会用10个map任务去完成。
每个map任务处理大于12M(几百万记录)的数据,效率肯定会好很多。

看上去,貌似这两种有些矛盾,一个是要合并小文件,一个是要把大文件拆成小文件,这点正是重点需要关注的地方,
根据实际情况,控制map数量需要遵循两个原则:使大数据量利用合适的map数;使单个map任务处理合适的数据量;

以上是"hive如何增加减少map数"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

文件 任务 大小 数据 资源 处理 合适 内容 参数 多个 情况 效率 篇文章 消耗 肯定 复杂 很大 适当 矛盾 差不多 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 滨州绩效考核hr软件开发公司 数据库怎么判断第几范式例题 网络技术系女生节 数据库超大怎么办 三级数据库技术历年题库 db2是关系型数据库吗 霜语服务器怎么不能免费转服 adb导出安卓手机数据库 网络安全 培训心得体会 专职网络安全领导小组 网络安全的概念发生了什么变化 oracle数据库属于哪个系统 软件开发 吴亚磊 山东省网络技术大赛决赛 材料硕士可以转软件开发吗 同一个局域网如何访问服务器 学习网络安全教育心得体会 软件开发行业从事数据分析 温州求索网络技术有限公司 数据库图形界面怎么设置约束 obs无法链接服务器 组态王中工业数据库用法 宁河软件开发电话多少 承德市公安局网络安全 中国版服务器 计算机网络技术有效发送速率 上海市大学生网络安全竞赛 如何搜索重大网络安全事件 关于青少年学习网络安全的资料 魔法觉醒不同服务器能一起拍照吗
0