파서를 안쓰고 하둡에서 바로 데이터 처리할때,
LATERAL VIEW explode 와 LATERAL VIEW posexplode기능은 매우 유용하다.
예를 들어, 다음과 같은 데이터를 풀고 싶은 경우가 있다.
■ 원본
name |
objects |
홍길동 |
카메라,라면,고기 |
둘리 |
소고기,노트북 |
■ 바꾸고 싶은 결과
name |
object |
objects |
홍길동 |
카메라 |
카메라,라면,고기 |
홍길동 |
라면 |
카메라,라면,고기 |
홍길동 |
고기 |
카메라,라면,고기 |
둘리 |
소고기 |
소고기,노트북 |
둘리 |
노트북 |
소고기,노트북 |
해결방법
2. LATERAL VIEW posexplode 사용하기
구분자로 쪼갠 인덱스까지 알고 싶다면 posexplode 를 쓰면 된다.
사용법은 거의 같다.
hive> select
name,
idx,
object,
objects
from (
select '홍길동' as name, '카메라,라면,고기' as objects
UNION ALL
select '홍길동' as name, '소고기,노트북' as objects
) log
LATERAL VIEW posexplode(split(objects, ",")) `_objects` AS object, idx
OK
name idx object objects
홍길동 카메라 0 카메라,라면,고기
홍길동 라면 1 카메라,라면,고기
홍길동 고기 2 카메라,라면,고기
홍길동 소고기 0 소고기,노트북
홍길동 노트북 1 소고기,노트북