谓词,是指用来描述或判断客体性质、特征或客体之间关系的词项。在SQL中即返回值为布尔值的函数。

谓词下推,在Hive中叫Predicate Pushdown,含义是指在不影响结果的前提下,尽量将过滤条件提前执行,使得最后参与join的表的数据量更小。谓词下推后,过滤条件将在map端提前执行,减少map端输出,降低了数据传输IO,节约资源,提升性能。大数据培训在Hive中通过配置hive.optimize.ppd参数为true,开启谓词下推,默认为开启状态。
一、表的分类
首先定义一下参与join的表的类型,共分4类。
1. Preserved Row table:保留表
a left (outer) join b 中的 a 表;
a right (outer) join b 中的 b 表;
a full outer join b a 和 b 表都是 保留表。
2. Null Supplying table:提供null值的表,也就是 非保留表,在join中如果不能匹配上的使用null填充的表。
a left (outer) join b 中的 b 表;
a right (outer) join b 中的 a 表,
a full outer join b a 和 b 表都是 null值保留表
3. During Join predicate:join中谓词,就是on后面的条件。
R1 join R2 on R1.x = 5 --> R1.x = 5就是join中谓词</

本文详细探讨了Hive中的谓词下推(Predicate Pushdown)技术,旨在优化查询性能。通过不同类型的JOIN操作(如Left Outer Join、Right Outer Join、Full Outer Join和Inner Join),分析了过滤条件对谓词下推的影响,并提供了具体案例说明何时可以提前执行过滤条件,以减少数据传输和提升查询效率。
最低0.47元/天 解锁文章
496

被折叠的 条评论
为什么被折叠?



