过滤Maptype键

时间:2018-05-02 01:58:07

标签: scala apache-spark apache-spark-sql spark-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”的行并且它们的值不为空,该怎么办?

谢谢!

1 个答案:

答案 0 :(得分:1)

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

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