如何控制hive中的map数
发表于:2025-02-06 作者:千家信息网编辑
千家信息网最后更新 2025年02月06日,这篇文章给大家分享的是有关如何控制hive中的map数的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1. 通常情况下,作业会通过input的目录产生一个或者多个map任务。
千家信息网最后更新 2025年02月06日如何控制hive中的map数
这篇文章给大家分享的是有关如何控制hive中的map数的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
1. 通常情况下,作业会通过input的目录产生一个或者多个map任务。 主要的决定因素有: input的文件总个数,input的文件大小,集群设置的文件块大小(目前为128M, 可在hive中通过set dfs.block.size;命令查看到,该参数不能自定义修改); 答案也是不一定。比如有一个127m的文件,正常会用一个map去完成,但这个文件只有一个或者两个小字段,却有几千万的记录, 如果map处理的逻辑比较复杂,用一个map任务去做,肯定也比较耗时。 针对上面的问题3和4,我们需要采取两种方式来解决:即减少map数和增加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, sethive.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安全错误
数据库的锁怎样保障安全
苏州信息网络技术收费标准
服务器迁移风险
财务软件开发价格
大学生网络安全500字
协成网络安全管理xcos
怎么登服务器管理卡
计算机网络技术ip和ie
测评网络安全工作
生物医学文献数据库用户名和密码
软件开发项目管理经验之敏捷
打开一个软件显示服务器连接失败
最强蜗牛服务器一组多少服
e07s戴尔服务器屏幕不显示
网络安全校园报告感悟
网络安全是指保护网络中的
一诺网络技术服务
建设网站服务器空间
渝中区网络软件开发服务公司
2003版服务器升级xp
义马软件开发哪家性价比高
湖南燃狮互联网科技企查查
餐饮后台系统软件开发公司
软件开发工程师面试100
正在尝试链接其它服务器
公开数据库的图表在哪里有
信息技术网络安全说课稿高中
数据库后端是啥
前台程序和后台数据库分开
it有哪些软件开发
安徽合肥网络安全攻防演练