apache-spark - 当一列从未在 spark sql 的操作中使用时,它是否曾经加载到内存中?
问题描述
当我在 Spark DataFrame 中有很多列,但只使用了其中一些列时,Spark 是否足够聪明,不会将未使用的列加载到内存中?
解决方案
在大多数情况下,spark 的优化器应该足够聪明,只加载需要的列(投影下推)。这对于 parquet 等柱状文件格式尤其强大,这意味着不需要读取整个文件。
但我认为在某些情况下,做出明确的select
陈述仍然更好,我认为我已经看到投影下推效果不佳的情况,主要是在非常复杂的查询中。
可以肯定的是,使用火花的df.explain
推荐阅读
- c# - 具有统一 C# 的控制对象的代码或函数
- machine-learning - 目标函数与评估指标
- python - NumPy 包给出了一个 array() 错误如何解决这个问题?
- oracle - Oracel Apex 自定义您的操作菜单
- docker - 用于容器的 Azure Web 应用程序 - 多个 docker run 命令
- anylogic - 更改我的数据库名称后源块中的错误
- splunk - 在 splunk 中计算事件吞吐量
- authentication - 使用 OAuth 2.0 / OpenID Connect 访问与 ID 令牌进行 REST-API 授权的最佳实践
- javascript - 检查js中的数字
- reactjs - DOMException:无法在“历史”上执行“replaceState”:具有 URL 的历史状态对象