【问题标题】:Spark filter on dataframe with array containing a map带有包含地图的数组的数据帧上的 Spark 过滤器
【发布时间】: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) 的值?

【问题讨论】:

    标签: scala apache-spark apache-spark-sql


    【解决方案1】:

    使用exists函数:

    dataframe.filter("exists(array_of_properties, x -> x.name = 'somename' and x.props['is_enabled'] is true)")
    

    【讨论】:

    • 这行得通 - 谢谢。使用存在过滤器有什么缺点吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-17
    • 1970-01-01
    相关资源
    最近更新 更多