动态过滤

    openLooKeng动态过滤主要应用于高选择性的join场景(包含针对分区表的分区裁剪以及非分区表的行过滤)。openLooKeng动态过滤当前适用于,semi join 以及right join场景,适用于Hive connectorDC connector以及Memory connector

    openLooKeng动态过滤特性依赖于分布式缓存组件,请参考State Store章节配置。

    上述属性说明如下:

    • dynamic-filtering-wait-time:等待动态过滤条件生成的最长等待时间,默认值是1s。
    • dynamic-filtering-data-type:设置动态过滤类型,可选包含BLOOM_FILTER以及HASHSET,默认类型为BLOOM_FILTER
    • dynamic-filtering-max-size: 每个dynamic filter的大小上限,如果预估大小超过设定值,代价优化器不会生成对应的dynamic filter,默认值是1000000。
    • dynamic-filtering-max-per-driver-row-count:每个driver可以收集的数据条目上限,默认值是10000。
    • dynamic-filtering-bloom-filter-fpp:动态过滤使用的bloomfilter的FPP值,默认是0.1。

    如果应用于Hive connector,需要对catalog/hive.properties如下修改:

    • hive.dynamic-filter-partition-filtering:使用动态过滤条件根据分区值进行预先过滤,默认值是false。

    下面的例子展示了SQL语句如何应用动态过滤条件,在执行计划中标记为dynamicFilter。 可以使用explain命令查看动态过滤是否应用,也可以在webUI中的liveplan查看当前执行是否应用动态过滤。

    Inner join: