谓词下推到底如何工作?

时间:2019-02-15 12:05:24

标签: hadoop parquet orc

有人可以举例说明谓词下推到底是如何工作的吗?

1 个答案:

答案 0 :(得分:2)

说您要执行查询

SELECT 
  SUM(price) 
FROM sales 
WHERE 
  purchase_date BETWEEN '2018-01-01' and '2018-01-31';

查询引擎的一个非常简单的实现是遍历所有parquet / orc文件,反序列化pricepurchase_date列,在purchase_date上应用谓词,并对过滤后的结果求和行。

Parquet(不确定orc)维护每个文件中列的统计信息,因此如果执行引擎足够聪明,它可以查看统计信息中purchase_date的最小值/最大值并确定是否存在行将匹配。例如,如果purchase_date.min=2014-05-05purchase_date.max=2014-05-06,则可以推断谓词将始终为false。

换句话说,它可以通过组合统计信息和过滤谓词来跳过实木复合地板文件。因为IO(文件或内存)通常是瓶颈,所以这可能会导致性能大幅度提高。增益与选择性(匹配行的百分比)成反比。

谓词下推一词来自以下事实:您要用谓词“提示”扫描运算符,然后将该谓词用于过滤感兴趣的行。或者,将谓词推送到扫描。