首页 > 解决方案 > 为 Maptype 键过滤 Dataframe 行

问题描述

我有一个带有 MapType 列的 DataFrame,我想过滤不包含某个键的行。

例如这里是我的数据:

val ds = Seq(
     |   (1, Map("foo" -> (1, "a"), "bar" -> (2, "b"))),
     |   (2, Map("foo" -> (3, "c"))),
     |   (3, Map("bar" -> (4, "d")))
     | ).toDF("id", "alpha")

我将如何过滤仅包含“bar”作为键的行?如果我想过滤包含“bar”并且它们的值不为空的行怎么办?

谢谢!

标签: scalaapache-sparkapache-spark-sqlspark-dataframe

解决方案


这是一个过滤器,其中您的地图包含键“bar”作为具有非空值的键:

dataFrame.filter(col("alpha").getItem("bar").isNotNull)

推荐阅读