“谓词下推”和“投影下推”有什么区别?

tal*_*mjr 5 bigdata apache-spark parquet

我遇到了多种信息来源,例如此处找到的信息来源,它将“谓词下推”解释为:

...如果你可以将查询的部分“下推”到数据存储的位置,从而过滤掉大部分数据,那么你可以大大减少网络流量。

但是,我也在其他文档(例如此处)中看到了术语“投影下推” ,这似乎是同一回事,但我不确定我的理解。

这两个术语之间有什么具体区别吗?

Dan*_*rod 9

谓词是指影响返回行数的 where/filter 子句。

投影是指选定的列。

例如:

如果您的过滤器只传递 5% 的行,那么只有 5% 的表将从存储传递到 Spark 而不是整个表。

如果您的投影仅选择 10 列中的 3 列,那么将从存储传递到 Spark 的列更少,并且如果您的存储是柱状(例如 Parquet,而不是 Avro)并且未选择的列不是过滤器的一部分,那么这些甚至不必阅读列。