Hive會將一個查詢轉(zhuǎn)化成一個或者多個階段安聘。這樣的階段可以是MapReduce階段痰洒、抽樣階段、合并階段浴韭、limit階段丘喻。或者Hive執(zhí)行過程中可能需要的其他階段念颈。默認情況下泉粉,Hive一次只會執(zhí)行一個階段。不過,某個特定的job可能包含眾多的階段嗡靡,而這些階段可能并非完全互相依賴的跺撼,也就是說有些階段是可以并行執(zhí)行的,這樣可能使得整個job的執(zhí)行時間縮短讨彼。不過财边,如果有更多的階段可以并行執(zhí)行,那么job可能就越快完成点骑。
通過設(shè)置參數(shù)hive.exec.parallel值為true酣难,就可以開啟并發(fā)執(zhí)行。不過黑滴,在共享集群中憨募,需要注意下,如果job中并行階段增多袁辈,那么集群利用率就會增加菜谣。
//打開任務(wù)并行執(zhí)行
set hive.exec.parallel=true;
//同一個sql允許最大并行度,默認為8晚缩。
set hive.exec.parallel.thread.number=16;
當然尾膊,得是在系統(tǒng)資源比較空閑的時候才有優(yōu)勢,否則荞彼,沒資源冈敛,并行也起不來。