UDTF는 한행을 입력받아서 여러 행을 반환하는 함수이다.
- take in a single input row and output a single output row
크게 4가지 종류가 있다.
- explode, inline, posexplode
- array, map, struct 형식의 데이터를 테이블
- json_tuple
- json 문자열을 파싱하여 반환
- get_json_object() 와 비슷한데 속도가 빠르다. 대신 xpath를 이용한 처리는 안됨
- url_tuple
- url 문자를 파싱
- HOST, PATH, QUERY, REF, PROTOCOL, AUTHORITY, FILE 를 반환
- stack
- 전달한 데이터를 여러개의 행으로 반환
> select * from employee;
OK
id-1 john ["a","b","c","d"] {"k1":"v1","k2":"v2"} 100
id-2 sam ["e","f","g","h"] {"k3":"v3","k4":"v4"} 300
id-3 tim ["i","j","k","l"] {"k5":"v5","k6":"v6"} 1000
id-4 paul ["z","c","v","b"] {"k7":"v7","k8":"v8"} 800
id-5 kill ["q","w","e","r"] {"k9":"v9","k0":"v0"} 600
> select explode(lists) as col1
> from employee;
OK
a
b
c
d
e
f
g
h
i
j
k
l
z
c
v
b
q
w
e
r
Time taken: 0.054 seconds, Fetched: 20 row(s)
> select explode(maps) as (key, value)
> from employee;
OK
k1 v1
k2 v2
k3 v3
k4 v4
k5 v5
k6 v6
k7 v7
k8 v8
k9 v9
k0 v0
Time taken: 0.052 seconds, Fetched: 10 row(s)
> select posexplode(lists) as (pos, col1)
> from employee;
OK
0 a
1 b
2 c
3 d
0 e
1 f
2 g
3 h
0 i
1 j
2 k
3 l
0 z
1 c
2 v
3 b
0 q
1 w
2 e
3 r
Time taken: 0.059 seconds, Fetched: 20 row(s)
'빅데이터 > hive' 카테고리의 다른 글
[hive] 테이블 stat 갱신하기 (0) | 2017.06.26 |
---|---|
[hive] 하이브 테이블에 struct 같은 복합 데이터 load 하는 법 (0) | 2017.04.12 |
[hive][error] hive로 MR 작업중 Illegal mix of collations A and B for operation '=' ... 오류 (0) | 2017.04.11 |
[hive] 하이브의 처리 결과에 칼럼정보 출력 or 추가 (0) | 2017.04.06 |
[hive] 쿼리를 이용하여 파일시스템에 데이터를 쓰기(INSERT OVERWRITE DIRECTORY) (0) | 2017.04.06 |