Hive(四)Hive调优

1038-茹同学

发表文章数:74

热门标签

首页 » 大数据 » 正文

Fetch抓取

Hive中对于某些情况的查询可以不使用MapReduce计算。例如简单的select方法,Hive可以简单的读取对应的表并输出。

通过设置hive-default.xml.template中的hive.fetch.task.conversion默认是more。
设置属性为more后,全局查找,字段查找,limit查找都不走MapReduce。

本地模式

当存在很多的本地小文件之后,每一个小文件的读取与计算都需要启动单独的task,将导致分配的资源过大。此时可以使用本地模式在本机进行读取与计算,避免消耗过多的资源。

Join

小表Join大表(新版本中没有区别)

将key值相对分散,且数据量较小的表放在join的左边,这样可以有效减少内存溢出错误发生的概率。再进一步,可以使用Group让小维度的表先进内存。在map端完成reduce。

select counnt(dictinct s_id) from score;
#在map端进行聚合,效率更高
select counnt(dictinct s_id) from score group by s_id;

多表关联

在多个表关联的时候,最好拆分成小段,避免大sql

大表join大表

Map超时有时是因为某些key的值太多,而相同key对应的值会发送到对应的reduce中,避免内存不够导致溢出。可以通过处理将这些缺失值赋予随机的字符串,将内容分发到不同的reduce中。

map端聚合

为了避免相同key’值得数据过多,导致数据倾斜,可以将很多操作放在map端进行聚合。
设定之后,产生的查询计划中会有两个MR Job。第一个MR Job中Map的输出结果会随机分布到Reduce中。每个Reduce做部分聚合操作。

标签:

未经允许不得转载:作者:1038-茹同学, 转载或复制请以 超链接形式 并注明出处 拜师资源博客
原文地址:《Hive(四)Hive调优》 发布于2020-11-08

分享到:
赞(0) 打赏

评论 抢沙发

评论前必须登录!

  注册



长按图片转发给朋友

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

Vieu3.3主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录