2016-03-03 2 views
4

Чтобы дать backfround я загрузил JSON с помощьюзапросов в Спарк SQL внутри массива

sqlContext.read.json(sn3://...) 
df.registerTable("posts") 

У меня есть следующая схема для моей таблицы в Спарк

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) 

Я хочу, чтобы выбрать все сообщения с хэштегом "Найк"

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

Я получаю сообщение об ошибке неопределенные функции ht.contains

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

Спасибо!

ответ

12

Я нашел ответ со ссылкой на Hive SQL.

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

Основной функцией является array_contains()

Смежные вопросы