分享

hive如何实现并发

hive里,同一sql里,会涉及到n个job,默认情况下,每个job是顺序执行的。
如果每个job没有前后依赖关系,可以并发执行的话,可以通过设置该参数 set hive.exec.parallel=true,实现job并发执行,该参数默认可以并发执行的job数为8。

[mw_shl_code=bash,true]set hive.exec.parallel=true;[/mw_shl_code]

例如:

[mw_shl_code=bash,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;
"""[/mw_shl_code]


注意:
1、笔者原来一个任务有98个job,运行3h左右,经设置该参数后,运行10min,可见该参数设置会让sql跑的更快,效率大大提高,但是会占用大量的map和reduce资源;
2、可以通过hive.exec.parallel.thread.number来设置并发执行的job数,如下:

[mw_shl_code=bash,true]set hive.exec.parallel=true;
set hive.exec.parallel.thread.number=最大并发job数; [/mw_shl_code]





已有(4)人评论

跳转到指定楼层
xuliang123789 发表于 2016-4-5 19:19:22
万分感谢楼主,正需要,赞~~
回复

使用道具 举报

leletuo2012 发表于 2016-5-24 14:38:40
你这个只是单个SQL中多job 进行并发,你知道多个sql进行并发如何操作么
回复

使用道具 举报

heierya 发表于 2017-10-9 21:32:11
leletuo2012 发表于 2016-5-24 14:38
你这个只是单个SQL中多job 进行并发,你知道多个sql进行并发如何操作么

有知道了的么?同求教!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条