Spark原理 V3.0 新特性
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spark原理 V3.0 新特性相关的知识,希望对你有一定的参考价值。
参考技术A 自适应查询执行(AQE)是Spark SQL中的一种优化技术,它利用运行时统计信息来选择最有效的查询执行计划,也就是说可以根据执行过程中的中间数据优化后续执行,从而提高整体执行效率。核心特征有如下三点:使用Spark SQL时,可通过spark.sql.shuffle.partitions 指定Shuffle时Partition个数,也就是Reducer个数。该参数决定了一个Spark SQL Job中包含的所有Shuffle的Partition个数。如下图所示,当该参数设置为3时,所有Shuffle中Reducer个数都为3。
这种方法存在如下问题:
假如Stage1的5个partition数据量分别为60MB,40MB,1MB,2MB,50MB。其中1MB与2MB的Partition明显过小,开启Adaptive Execution后
每个Reducer 读取一个或者多个Shuffle Write partition数据(如下图所示,Reducer 0 读取 Partition 0,Reducer 1 读取 Partition 1、2、3,Reducer2读取Partition4)
在运行时动态调整join策略,在满足条件的情况下,即一张表小于Broadcast阈值,可以讲SortMergeJoin转化为BroadcastHashJoin。
在运行时很容易地检测出有数据倾斜的partition,当执行某个stage时,我们收集该stage的每个mapper的shuffle数据大小和记录条数。如果某一个partition数据量或者记录条数超过中位数的N倍,并且大于某个预先配置的阈值,我们就认为这是一个数据倾斜的partition,需要进行特殊的处理。
以上是关于Spark原理 V3.0 新特性的主要内容,如果未能解决你的问题,请参考以下文章