Spark-DPP特性

发布于 — 2022 年 04 月 01 日
#Spark

DPP(Dynamic Partition Pruning, 动态分区剪裁)是Spark 3.0版本中第二个引人瞩目的特性, 它指的是在星型数仓的数据关联场景中, 可以充分利用过滤之后的维度表, 大幅削减事实表的数据扫描量, 从整体上提升关联计算的执行性能.

分区剪裁

对partition字段的过滤条件会只扫描符合条件的一类文件夹. 不会扫描全部的文件.

动态分区剪裁

将维度表中的结果发送到事实表中, 事实表根据这个子集做过滤, 从而减少数据扫描量, 提升I/O效率.

需要满足这三个条件才会触发动态分区剪裁

  1. 事实表必须是分区表, 而且分区字段(可以是多个)必须包含Join Key
  2. 仅支持等值Join, 对于不等值Join是不支持的.
  3. 维度表过滤之后的数据集要小于广播阈值

在对维度表过滤完之后, 会把这份数据封装为广播变量, 然后

  1. 发送给事实表中, 来减少事实表的数据扫描量.
  2. 发送给后续的Reduce Task来进行关联操作.

小结

没啥用, 因为需要限制Join Key为分区字段.