如何检查Spark SQL Map类型中是否存在密钥

sei*_*iya 2 apache-spark apache-spark-sql

所以我有一张表,其中有一列地图类型(键和值都是字符串)。

我想像这样编写spark sql,以检查给定键是否存在于地图中。

select count(*) from my_table where map_contains_key(map_column, "testKey")
Run Code Online (Sandbox Code Playgroud)

我找不到任何可以执行此操作的spark sql函数。

有任何想法吗?

谢谢

sei*_*iya 6

弄清楚了。以下sql查询有效

select count(*) from my_table where map_column["testKey"] is not null
Run Code Online (Sandbox Code Playgroud)


pas*_*701 5

可以使用以下构造:

df.where($"map_column"("testKey").isNotNull)
Run Code Online (Sandbox Code Playgroud)

对于纯SQL:

spark.sql("select * from my_table where mapColumn[\"testKey\"] is not null")
Run Code Online (Sandbox Code Playgroud)