带有包含地图的数组的数据帧上的 Spark 过滤器
Posted
技术标签:
【中文标题】带有包含地图的数组的数据帧上的 Spark 过滤器【英文标题】:Spark filter on dataframe with array containing a map 【发布时间】:2022-01-23 02:09:06 【问题描述】:我有一个带有模式的数据框,它有一个嵌套的地图值数组:
root
|-- array_of_properties: array (nullable = true)
| |-- element: struct (containsNull = true)
| | |-- name: string (nullable = true)
| | |-- props: map (nullable = true)
| | | |-- key: string
| | | |-- value: string (valueContainsNull = true)
我需要在数组内的映射中过滤结构名称和一些特定键的值。我可以过滤名称:
dataframe.filter(array_contains(col("array_of_properties.name"), "somename"))
如何在嵌套 props
映射中的两个键的值上添加 AND 过滤器(例如,键名 is_enabled
的布尔值为 true 或 false,键名 source
和字符串test
) 的值?
【问题讨论】:
【参考方案1】:使用exists
函数:
dataframe.filter("exists(array_of_properties, x -> x.name = 'somename' and x.props['is_enabled'] is true)")
【讨论】:
这行得通 - 谢谢。使用存在过滤器有什么缺点吗?以上是关于带有包含地图的数组的数据帧上的 Spark 过滤器的主要内容,如果未能解决你的问题,请参考以下文章