问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Hive优化的十大方法

发布网友 发布时间:2022-09-15 20:56

我来回答

1个回答

热心网友 时间:2023-10-10 08:37

Hive用的好,才能从数据中挖掘出更多的信息来。用过hive的朋友,我想或多或少都有类似的经历:一天下来,没跑几次hive,就到下班时间了。Hive在极大数据或者数据不平衡等情况下,表现往往一般,因此也出现了presto、spark-sql等替代品。这里重点讲解hive的优化方式,例如

一. 表连接优化

二. 用insert into替换union all
如果union all的部分个数大于2,或者每个union部分数据量大,应该拆成多个insert into 语句,实际测试过程中,执行时间能提升50%。示例参考如下:

可以改写为:

三. order by & sort by
order by : 对查询结果进行全局排序消耗时间长,需要set hive.mapred.mode=nostrict
sort by : 局部排序,并非全局有序,提高效率。

四. transform+python
一种嵌入在hive取数流程中的自定义函数,通过transform语句可以把在hive中不方便实现的功能在python中实现,然后写入hive表中。示例语法如下:

如果除python脚本外还有其它依赖资源,可以使用ADD ARVHIVE。

五. limit 语句快速出结果
一般情况下,Limit语句还是需要执行整个查询语句,然后再返回部分结果。有一个配置属性可以开启,避免这种情况—对数据源进行抽样

缺点:有可能部分数据永远不会被处理到

六. 本地模式
对于小数据集,为查询触发执行任务消耗的时间>实际执行job的时间,因此可以通过本地模式,在单台机器上(或某些时候在单个进程上)处理所有的任务。

可以通过设置属性hive.exec.mode.local.auto的值为true,来让Hive在适当的时候自动启动这个优化,也可以将这个配置写在$HOME/.hiverc文件中。
当一个job满足如下条件才能真正使用本地模式:

七. 并行执行
Hive会将一个查询转化为一个或多个阶段,包括:MapRece阶段、抽样阶段、合并阶段、limit阶段等。默认情况下,一次只执行一个阶段。 不过,如果某些阶段不是互相依赖,是可以并行执行的。

会比较耗系统资源。

八. 调整mapper和recer的个数

假设input目录下有1个文件a,大小为780M,那么hadoop会将该文件a分隔成7个块(6个128m的块和1个12m的块),从而产生7个map数
假设input目录下有3个文件a,b,c,大小分别为10m,20m,130m,那么hadoop会分隔成4个块(10m,20m,128m,2m),从而产生4个map数。
即如果文件大于块大小(128m),那么会拆分,如果小于块大小,则把该文件当成一个块。
map执行时间:map任务启动和初始化的时间+逻辑处理的时间。

减少map数
若有大量小文件(小于128M),会产生多个map,处理方法是:

前面三个参数确定合并文件块的大小,大于文件块大小128m的,按照128m来分隔,小于128m,大于100m的,按照100m来分隔,把那些小于100m的(包括小文件和分隔大文件剩下的)进行合并。

set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat; – 执行前进行小文件合并。

增加map数
当input的文件都很大,任务逻辑复杂,map执行非常慢的时候,可以考虑增加Map数,来使得每个map处理的数据量减少,从而提高任务的执行效率。
set mapred.rece.tasks=?

一般根据输入文件的总大小,用它的estimation函数来自动计算rece的个数:rece个数 = InputFileSize / bytes per recer

九. 严格模式

十. 数据倾斜
表现:
任务进度长时间维持在99%(或100%),查看任务监控页面,发现只有少量(1个或几个)rece子任务未完成。因为其处理的数据量和其他rece差异过大。单一rece的记录数与平均记录数差异过大,通常可能达到3倍甚至更多。 最长时长远大于平均时长。

原因:

解决方案:参数调节

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
为什么来大姨妈胸会胀 少儿学什么舞蹈 青年学什么舞蹈好 成年人学什么舞蹈 福州企业最低工资标准 2013年厦门的底薪是多少 生产要素的需求有哪些性质 生产要素的需求有何特点? 什么是生产要素需求 微观经济学要素需求什么是条件要素需求?它和要素需求有什么不同?_百度... 四宝饭的红肠怎样做 四宝饭的做法,四宝饭怎么做好吃,四宝饭的家常做法 四宝饭怎么做? 广东四宝是什么 红枣、枸杞、干柠檬泡水怎么样? 听说科技怎么读单词 有哪些数字成语? 车模式电子狗怎么用法? 河北软件职业技术学院用什么银行卡 Ca(0H)2、CaO、CaSO4、CaSO3叫什么化学名称活性二氧化硅为白色,细度为36-150_百度问一问 初中学生查询成绩登录入口 父姓李母姓孙,给孩子起李暮紫晨女孩,可以吗?是什么含义 孕妇可以吃乌鸡汤吗中期 孕妇能不能喝乌鸡汤早期 怀孕期能喝乌鸡汤吗 什么的绿翅膀形容词? 央视有些广告左上角有个绿色的像半个蝴蝶翅膀的是什么意思 *一台好多广告播的时候右上角都打一个白底绿色的类似翅膀的标志是什么意思? 鸭翅绿含义 住院用医保卡报销后农村的医疗保险还能报吗 hive如何调整map数和reduce数 hive优化方法 【图文】胡辣汤的做法和配料 qq空间那个绿色的朋友消息如何关闭 Green space facilities are contributing to an important extent to the quality of the urban air. 怎么转成二维码 家乡咸汤圆的做法步骤图,家乡咸汤圆怎么做 苹果5S如何设置嘀嘀打车自动扣费? 脆肚的做法 有哪些带月的诗句100首 带月字的诗有哪些? 夏季吃什么食物能清热解毒 会计上岗证考题 09下会计上岗证试题 一道会计上岗证的多选题 2006年上海会计上岗证考试的模拟试题 会计资格上岗证的题? 水煮千张的做法,水煮千张怎么做好吃,水煮千张 一百多个鸡蛋被雨淋湿擦干了还能卖吗? 微信怎样修改自己的名字和