gpt4 book ai didi

apache-spark - 从结构数组中选择 Spark DataFrames 中的特定列

转载 作者:行者123 更新时间:2023-12-04 05:27:41 24 4
gpt4 key购买 nike

我有一个 Spark DataFrame df具有以下架构:

root
|-- k: integer (nullable = false)
|-- v: array (nullable = true)
| |-- element: struct (containsNull = true)
| | |-- a: integer (nullable = false)
| | |-- b: double (nullable = false)
| | |-- c: string (nullable = true)

是否可以只选择 a, cv来自 df没有做 map ?特别是 df从 Parquet 文件加载,我不想要 c 的值甚至可以加载/阅读。

最佳答案

这完全取决于您期望作为输出的内容,这从您的问题中不清楚。让我澄清一下。
你可以做

df.select($"v.a",$"v.b").show()

然而,结果可能不是你想要的,因为 v是一个数组,它将为 a 生成一个数组,每个 b 生成一个数组。您可能想要做的是 explode然后数组 v 从分解的数据框中选择:
df.select(explode($"v").as("v" :: Nil )).select($"v.a", $"v.b").show()

这会将 v 展平到一个表格,其所有值都展平。
在任何一种情况下,spark/parquet 都应该足够聪明,可以使用谓词下推而不加载 c。

关于apache-spark - 从结构数组中选择 Spark DataFrames 中的特定列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37172254/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com