2016-03-03 69 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) 

我想選擇的所有帖子與包括hashtag 「耐克」

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()