天天看点

一个简单的HQL优化

线上做Job迁移:从GP迁移到Hadoop,发现有些Job原来跑了2-3分钟到Hadoop上跑到10分钟左右,这样的话会影响到迁移的效果;一个明显的Query如下:

Insertinto table_big partition(dt=today) select xxx from table_hour_incrementala,table_big b where a.id=b.id and b.dt=yesterday;

查看一下grace:

<a href="http://blog.51cto.com/attachment/201309/142236756.png" target="_blank"></a>

显然瓶颈集中在第二个MAP上,reduce的shuffle time执行了207秒,计算了300s不到;这个table_big是个外部表,查看一下文件发现是一个250MB左右的gz文件,原因基础上清楚了,在该Job设置了一下mapred.reduce.tasks=8就可以解决了:

首先是降低每个reduce的计算时间,其次是today分区的文件增加进而增加MAP数,这个要明天才能看到效果了:P

<a href="http://blog.51cto.com/attachment/201309/142310482.png" target="_blank"></a>

可以看到每个reduce的计算时间已经降到30秒;同时,产生today分区的文件也是8个30MB的小文件,为接下来增加MAP做好准备

本文转自MIKE老毕 51CTO博客,原文链接:http://blog.51cto.com/boylook/1301072,如需转载请自行联系原作者

继续阅读