hive sql 在多个sql union all 时 优化方式

前面提到了hive.exec.parallel可以控制一个sql中多个可并行执行的job的运行方式.
当hive.exec.parallel为true的时候,同一个sql中可以并行执行的job会并发的执行.

而参数hive.exec.parallel.thread.number就是控制对于同一个sql来说同时可以运行的job的最大值,该参数默认为8.此时最大可以同时运行8个job.

我找了个job比较多的sql,task id是1430403,是这个任务中的最后一个sql,是n个sql一起的union操作
通过修改参数hive.exec.parallel和hive.exec.parallel.thread.number测试了下不同情况的执行速度
其中hive.exec.parallel.thread.number表示同时运行的job的个数

不开并行:2533.722 seconds
开并行,并行度为8:266.82 seconds
开并行,并行度为16:194.33 seconds
开并行,并行度为32:133.117 seconds

当并行度为32的时候,速度提升了将近20倍,但是会占用更多的map和reduce资源

猜你喜欢

转载自blog.csdn.net/yisun123456/article/details/81982845