apache-spark - "predicate pushdown"和 "projection pushdown"有什么区别?

标签 apache-spark bigdata parquet

我接触过多种信息来源,例如找到的一个 here ,将“谓词下推”解释为:

… if you can “push down” parts of the query to where the data is stored, and thus filter out most of the data, then you can greatly reduce network traffic.



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

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

最佳答案

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

投影是指选定的列。

例如:

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

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

关于apache-spark - "predicate pushdown"和 "projection pushdown"有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58235076/

相关文章:

hadoop - 如何在类似于pyspark的java中将parquet文件写入分区?

scala - 警告 :Multiple versions of scala libraries detected?

java - 如何修复 src 文件系统问题上的资源更改

scala - 单元测试 Spark 数据帧转换链接

hadoop - 如何使用 Pig 按键和值分组

hadoop - Oozie Coordinator 中数据集的延迟

java - 如何在关闭它并将其写入磁盘之前获取 ParquetWriter 对象的内存大小?

python - 在 pyspark 中使用基于 DataFrame 的 API 在 2 个稀疏向量列表之间进行矩阵乘法的最佳方法是什么?

apache-spark - Apache Spark :Why reduceByKey transformation executes the DAG?

python - Spark SQL 性能 - 在最小值和最大值之间加入值