首页 > 解决方案 > 当一列从未在 spark sql 的操作中使用时,它是否曾经加载到内存中?

问题描述

当我在 Spark DataFrame 中有很多列,但只使用了其中一些列时,Spark 是否足够聪明,不会将未使用的列加载到内存中?

标签: apache-sparkapache-spark-sql

解决方案


在大多数情况下,spark 的优化器应该足够聪明,只加载需要的列(投影下推)。这对于 parquet 等柱状文件格式尤其强大,这意味着不需要读取整个文件。

但我认为在某些情况下,做出明确的select陈述仍然更好,我认为我已经看到投影下推效果不佳的情况,主要是在非常复杂的查询中。

可以肯定的是,使用火花的df.explain


推荐阅读