Hive Query:使用String Array

时间:2015-03-13 05:15:44

标签: arrays string hive

我有一个HIVE表,其代码如下:

hive>desc books;
gen_id                  int                                         
author                  array<string>                               
rating                  double                               
genres                  array<string>  

hive>select * from books;

| gen_id         | rating    | author          |genres
+----------------+-------------+---------------+----------
| 1              | 10        | ["A","B"]       | ["X","Y"]  
| 2              | 20        | ["C","A"]       | ["Z","X"]
| 3              | 30        | ["D"]           | ["X"]

是否存在可以执行某些SELECT操作并返回单个行的查询,如下所示:

| gen_id      |  rating        | SplitData
+-------------+---------------+-------------
| 1           | 10            | "A"
| 1           | 10            | "B"
| 1           | 10            | "X"
| 1           | 10            | "Y"
| 2           | 20            | "C"
| 2           | 20            | "A"
| 2           | 20            | "Z"
| 2           | 20            | "X"
| 3           | 30            | "D"
| 3           | 30            | "X"

有人可以指导我如何获得这个结果。提前感谢您的任何帮助。

1 个答案:

答案 0 :(得分:3)

你需要做横向视图并爆炸,即

SELECT
    gen_id,
    rating,
    SplitData 
FROM (
    SELECT  
       gen_id,
       rating, 
       array (ex_author,ed_genres) AS ar_SplitData  
    FROM 
       books 
       LATERAL VIEW explode(books.author) exploded_authors AS ex_author
       LATERAL VIEW explode(books.genres) exploded_genres AS ed_genres  
) tab
LATERAL VIEW explode(tab.ar_SplitData) exploded_SplitData AS SplitData;

我没有机会测试它,但它应该显示一般路径。 GL!