缓存嵌套列时,Spark 是不是优化存储

Posted

技术标签:

【中文标题】缓存嵌套列时,Spark 是不是优化存储【英文标题】:Does Spark optimize the storage when a nested column is cached缓存嵌套列时,Spark 是否优化存储 【发布时间】:2018-10-02 15:18:09 【问题描述】:

我从 parquet 中读取了一个 DataFrame,我想在选择一些嵌套结构后缓存它。

df.select($"a.b.c" as "c").cache()

我知道整个a 列将从输入中读取(Spark 2.5。应该解决这个问题:SPARK-17636)但我想知道存储是否会更聪明并且只存储选择的结果(所以不是整个a)。

【问题讨论】:

我不知道你如何检查,好点。 2.4位是? 【参考方案1】:

是的,只有在执行操作后才会缓存选择的结果。 select 语句返回一个数据帧,即缓存的数据帧。

请注意,您的代码中尚未发生缓存,因为未采取任何操作。您需要执行一些操作来填充缓存,例如

df.select($"a.b.c" as "c").cache().count()

【讨论】:

以上是关于缓存嵌套列时,Spark 是不是优化存储的主要内容,如果未能解决你的问题,请参考以下文章

取消嵌套命名列表列时保留名称

(spark-xml) 使用 from_xml 函数解析 xml 列时仅接收 null

在过滤其中一列时选择对

从 sparlyr tibble 对象读取数据时访问列时出错

当使用特定值更新多个列时,在 VIEW 上使用触发器执行存储过程

PySpark 在创建包含现有列名的新列时读取多个文件