【问题标题】:How does predicate pushdown work exactly?谓词下推究竟是如何工作的?
【发布时间】:2019-07-09 13:51:02
【问题描述】:

谁能用例子解释一下谓​​词下推是如何工作的?

【问题讨论】:

  • @cricket_007 好吧,当我在谷歌上搜索它时,那些 cloudera 链接根本没有为我弹出。我很确定下次有人用谷歌搜索时,第一个弹出的链接就是这个。
  • 我只是从现在删除的答案中移动它。但是,如果有的话,您至少应该显示您搜索的内容

标签: hadoop parquet orc


【解决方案1】:

假设你想执行一个查询

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,它可以推断谓词将始终评估为假。

换句话说,它可以通过结合统计信息和过滤谓词来跳过 parquet 文件。这可以带来巨大的性能提升,因为 IO(文件或内存)通常是瓶颈。增益与选择性(匹配行的百分比)成反比。

谓词下推一词源于这样一个事实,即您使用谓词“暗示”扫描运算符,然后该谓词将用于过滤感兴趣的行。或者,将谓词推送到扫描。

【讨论】:

    猜你喜欢
    • 2013-12-23
    • 2011-06-26
    • 2021-08-15
    • 2012-06-08
    • 2011-10-11
    • 2013-07-05
    • 1970-01-01
    • 1970-01-01
    • 2014-09-29
    相关资源
    最近更新 更多