hive里,同一sql里,会涉及到n个job,默认情况下,每个job是顺序执行的。
如果每个job没有前后依赖关系,可以并发执行的话,可以通过设置该参数 set hive.exec.parallel=true,实现job并发执行,该参数默认可以并发执行的job数为8。
set hive.exec.parallel=true;
例如:
sql="""
set hive.exec.parallel=true;
use database;
select a,b,c
from
(
select a1 as a,b1 as b,c1 as c from table1
union all
select a2 as a,b2 as b,c2 as c from table2
union all
select a3 as a,b3 as b,c3 as c from table3
...
)t;
"""
注意:
1、笔者原来一个任务有98个job,运行3h左右,经设置该参数后,运行10min,可见该参数设置会让sql跑的更快,效率大大提高,但是会占用大量的map和reduce资源;
2、可以通过hive.exec.parallel.thread.number来设置并发执行的job数,如下:
set hive.exec.parallel=true;
set hive.exec.parallel.thread.number=最大并发job数;
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文:http://blog.csdn.net/lixiaotaoplus/article/details/46757237