如何从 StructType 数组中删除元素?

Posted

技术标签:

【中文标题】如何从 StructType 数组中删除元素?【英文标题】:How to remove elements from Array of StructType? 【发布时间】:2021-10-23 21:05:40 【问题描述】:

我有一个架构

-- item: array (nullable = true)
 |    |-- element: struct (containsNull = true)
 |    |    |-- key: string (nullable = true)
 |    |    |-- type: string (nullable = true)
 |    |    |-- one: string (nullable = true)
 |    |    |-- two: boolean (nullable = true)
 |    |    |-- three: long (nullable = true)
    我想为数组中的每个键创建一个新列,它的值应该基于类型(如果 item.type = "one",那么该键的值将是 element.one) 如果它的键等于“电子”,我想从数组中删除 struct(item)

【问题讨论】:

要将结构数组分解为列,您可以使用inline,即df.selectExpr("inline(item)") 【参考方案1】:

无法准确理解您想要什么,但就像 Kafels 所说,您可以使用 inline 将结构数组分解为行(数组中的每个元素一个)和列,然后您将拥有以下架构:

-- key: string (nullable = true)
-- type: string (nullable = true)
-- one: string (nullable = true)
-- two: boolean (nullable = true)
-- three: long (nullable = true)

然后用df.filter(col("item") != "electronic")过滤“电子”项目

【讨论】:

以上是关于如何从 StructType 数组中删除元素?的主要内容,如果未能解决你的问题,请参考以下文章

Pyspark 将 StructType 列聚合为每行的元素数组 [重复]

在JAVA中如何从数组中删除一个元素

C语言如何从数组中删除一个指定元素?

PHP:如何从数组中删除特定元素?

如何从数组中删除所有元素[重复]

如何在 Swift 中从数组中删除一个元素