在数组内的 Spark SQL 中查询

Query in Spark SQL inside an array

为了给出背景,我使用

加载了JSON
sqlContext.read.json(sn3://...)
df.registerTable("posts")

我在 Spark

中的 table 有以下架构
scala> posts.printSchema
root
 |-- command: string (nullable = true)
 |-- externalId: string (nullable = true)
 |-- sourceMap: struct (nullable = true)
 |    |-- hashtags: array (nullable = true)
 |    |    |-- element: string (containsNull = true)
 |    |-- url: string (nullable = true)
 |-- type: string (nullable = true)

我想 select 所有带有主题标签 "nike"

的帖子
sqlContext.sql("select sourceMap['hashtags'] as ht from posts where ht.contains('nike')");

我收到一个错误 未定义函数 ht.contains

我不知道用什么方法在数组中搜索。

谢谢!

我找到了有关 Hive 的答案 SQL。

sqlContext.sql("select sourceMap['hashtags'] from posts where array_contains(sourceMap['hashtags'], 'nike')");

关键函数是array_contains()