在数组内的Spark SQL中查询

时间:2016-03-03 23:50:51

标签: apache-spark apache-spark-sql spark-dataframe

为了给backfround我已经使用

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

我在Spark中的表有以下架构

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)

我想用主题标签“nike”

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

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

我不确定在数组中使用什么方法进行搜索。

谢谢!

1 个答案:

答案 0 :(得分:17)

我发现答案指的是Hive SQL。

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

关键功能是array_contains()