복붙노트

[HADOOP] 행의 배열 값을 확장하는 방법 !! 하이브 SQL 사용

HADOOP

행의 배열 값을 확장하는 방법 !! 하이브 SQL 사용

나는 4 개의 열이있는 테이블을 가지고 있는데, 하나의 열 (아이템) 타입은 ARRAY이고 다른 하나는 문자열이다.

ID   |    items                                  | name  |  loc  
_________________________________________________________________

id1  | ["item1","item2","item3","item4","item5"] | Mike | CT
id2  | ["item3","item7","item4","item9","item8"] | Chris| MN
.
.

여기, 나는 비정규 화 된 출력을 원한다.

ID   |    items                       | name  |  loc  
______________________________________________________
id1  | item1                          | Mike  | CT
id1  | item2                          | Mike  | CT
id1  | item3                          | Mike  | CT
id1  | item4                          | Mike  | CT
id1  | item5                          | Mike  | CT
id2  | item3                          | Chris | MN
id2  | item7                          | Chris | MN
id2  | item4                          | Chris | MN
id2  | item9                          | Chris | MN
id2  | item8                          | Chris | MN

나는 하이브 SQL 전문가가 아니므로, 이걸 도와주세요.

해결법

  1. ==============================

    1.이 시도:

    이 시도:

     SELECT ID,itemsName,name,loc
     FROM Table
     LATERAL VIEW explode(items) itemTable AS itemsName;
    

    explode (items)에서 항목은 사용자의 저장된 테이블 열이고 Table은 사용자의 Stored 테이블입니다.

  2. from https://stackoverflow.com/questions/27039799/how-to-expend-array-values-in-rows-using-hive-sql by cc-by-sa and MIT license