数据迁移过程中hive sql调优

本文记录的是,在数据处理过程中,遇到了一个sql执行很慢,对一些大型的hive表还会出现OOM,一步一步通过参数的设置和sql优化,将其调优的过程。

先上sql

select t1.create_time from 
(
  select * from beatles_ods.route where year=2017 and month=07 and day=01
) t1 
left outer join 
(
  select * from (select *,row_number() over(partition by id) num from beatles_test.route where year=2017 and month=07 and day=01) t where t.num =1
) t2 
on t1.id = t2.id where t2.id = NULL;

可以看到这个sql由1个join,一个去重语句,组成,这两种操作都是很耗费资源的。

1、对链接操作,小表放在链接左边。

这是一个老生常谈的事情了,在这里不做细致介绍。基本来说,小表会减少mapreduce过程中的shuffle。

事实上“把小表放在前面做关联可以提高效率”这种说法是错误的。正确的说法应该是“把重复关联键少的表放在join前面做关联可以提高join的效率。”

最终得出的结论是:写在关联左侧的表每有1条重复的关联键时底层就会多1次运算处理。

假设A表有一千万个id,平均每个id有3条重复值,那么把A表放在前面做关联就会多做三千万次的运算处理,这时候谁写在前谁写在后就看出性能的差别来了。

如果想深刻了解,请移步:

http://blog.sina.com.cn/s/blog_6ff05a2c01016j7n.html

2、调整reduce的个数,这个个数可以调整到256以内,并不是越大越好,太大会消耗集群上的资源,并增加汇总压力。

set mapred.reduce.tasks = 30;

3、将内存调大,防止内存溢出

设置map和reduce的内存

set mapreduce.map.memory.mb=4096;
set mapreduce.reduce.memory.mb=4096;

设置JVM内存

set mapreduce.map.java.opts=-Xmx2500M;

map和reduce可以视情况开大一些,我这里设置的是4G。如果资源充裕的情况下,可以将此值设置的大一些。但是绝对不是越大越好,单纯靠提升内存来优化程序是不被推荐的。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏java一日一条

改善Java文档的理由、建议和技巧

我非常确定,作为开发人员我们都喜爱技术文档。我们喜欢阅读文档、写文档,更不用说维护文档了,我简直爱死它了!

991
来自专栏腾讯开源的专栏

手游热更新方案xLua开源:Unity3D下Lua编程解决方案

xLua是Unity3D下Lua编程解决方案,自2016年初推广以来,已经应用于十多款腾讯自研游戏,凭借其出色的性能,易用性,扩展性而广受好评。现在xLua开源...

7596
来自专栏互联网杂技

Nodejs学习路线图

Nodejs框架是基于V8的引擎,是目前速度最快的Javascript引擎。chrome浏览器就基于V8,同时打开20-30个网页都很流畅。Nodejs标准的w...

1.1K8
来自专栏云飞学编程

Python爬虫,用第三方库解决下载网页中文本的问题

还在辛辛苦苦的查找网页规律,写正则或者其他方式去匹配文本内容吗?还在纠结怎么去除小说网站的其他字符吗?

1223
来自专栏微信小程序开发

微信小程序开发常见问题(二)

知晓程序员,专注微信小程序开发的程序员! 今天再给大家分享几个微信小程序开发的常见问题,顺便吐槽一下,武汉的冬天太TM冷了,没有暖气的冬天真的很难过,写文章的心...

4865
来自专栏卡少编程之旅

REACT框架学习心得

3537
来自专栏黑白安全

甲骨文称 Java 序列化的存在是个错误,计划删除

甲骨文计划从 Java 中去除序列化功能,因其在安全方面一直是一个棘手的问题。 Java 序列化也称为 Java 对象序列化,该功能用于将对象编码为字节流…Or...

1003
来自专栏FreeBuf

Zip Slip漏洞影响大量项目,多个生态系统受牵连

近期,来自Synk的安全研究专家公布了一个高危漏洞的技术细节信息,而这个漏洞将影响多个负责处理压缩文档文件的开源代码库。

1080
来自专栏*坤的Blog

高效搜索

2634
来自专栏架构师之路

计数系统架构实践一次搞定 | 架构师之路

提醒,本文较长,可提前收藏/转发。 一、需求缘起 很多业务都有“计数”需求,以微博为例: ? 微博首页的个人中心部分,有三个重要的计数: 关注了多少人的计数 粉...

5296

扫码关注云+社区

领取腾讯云代金券