apache-spark - 缓存嵌套列时,Spark 是否优化存储
问题描述
我从 parquet 中读取了一个 DataFrame,我想在选择一些嵌套结构后缓存它。
df.select($"a.b.c" as "c").cache()
我知道整个a
列将从输入中读取(Spark 2.5。应该解决这个问题:SPARK-17636)但我想知道存储是否会更聪明并且只存储选择的结果(所以不是全部a
) .
解决方案
是的,在采取行动后,只有选择的结果会被缓存。select 语句返回一个数据帧,即缓存的数据帧。
请注意,在您的代码中尚未发生缓存,因为未采取任何操作。您需要执行一些操作来填充缓存,例如
df.select($"a.b.c" as "c").cache().count()
推荐阅读
- django - 如何从 Django 选择字段中检索选定的数据?
- macos - lldb:查看 macOS 上的所有寄存器
- python - SYS.STDIN 的 read() 方法等 - 从哪里获取更多信息?
- git - 使用 git 显示过去 24 小时内的聚合“单词更改”
- node.js - node-gyp 针对错误的 NODE_MODULE_VERSION 进行编译
- netflix-eureka - 如何配置备用 SSL 属性以连接到 Spring Boot Admin?
- visual-studio-code - 如何在树莓派上安装 VSCode
- javascript - 对文本有更多控制的 TextArea 的替代品?
- c# - Excel 12.0 Interop 使用 C# 在 Excel 2016 上随机运行
- hadoop2 - 我们可以在现有集群中将 ambari 配置为非 root 用户吗