写一篇水水的技术文,总结一下sparksql中不同stage的并行执行相关,也是来自于一位群友的提问:
我们群里有很多技术很棒并且很热心的大佬,哈哈~
Hive中Job并发执行
hive中,同一sql里,如果涉及到多个job,默认情况下,每个job是顺序执行的。
但如果某些job没有前后依赖关系的话,是阔以并行执行的,这样可能使得整个job的执行时间缩短。
可以通过设置参数 set hive.exec.parallel=true,实现job并发执行,该参数默认可以并发执行的job数为8,相关参数如下:
set hive.exec.parallel=true; //打开任务并行执行
set hive.exec.parallel.thread.number=16; //同一个sql允许最大并行度,默认为8。
Spark中多个Stage的并发执行
先给结论:
-
没有相互依赖关系的Stage是可以并行执行的,比如union all 两侧的sql
-
存在依赖的Stage必须在依赖的Stage执行完成后才能执行下一个Stage
-
Stage的并行度取决于资源数(配制的参数以及队列资源的核数、内存等),相关参数如下:
set spark.dynamicAllocation.