Запрос в Spark SQL внутри массива

Чтобы создать фон, я загрузил 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')");

Я получаю сообщение об ошибке undefined function ht.contains

Я не уверен, какой метод использовать для поиска в массиве.

Спасибо!


person lazywiz    schedule 03.03.2016    source источник


Ответы (1)


Я нашел ответ, относящийся к Hive SQL.

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

Ключевая функция - array_contains ()

person lazywiz    schedule 03.03.2016