JSON 형태의 문자열로 들어오는 칼럼을 UDTF 함수를 이용하여 테이블로 만들어야 할 때 다음과 같이 사용할 수 있다. JSON 문자열의 데이터를 찾는 것은 get_json_object()를 이용하고, inline() 함수를 이용하여 테이블화 한다. hive> SELECT inline(array( struct(get_json_object(str, "$.key1")) > , struct(get_json_object(str, "$.key2")) )) > FROM ( SELECT '{ "key1": "a", "value1" : "1", "key2": "b", "value2" : "2" }' AS str ) t > ; OK a b Time taken: 0.031 seconds, Fetched: 2 row(s)
hive 에서 array, map 타입의 데이터를 처리하기 편리하게 하기 위해서 1행의 데이터를 여러행의 데이터로 펼쳐주는 explode UDTF 함수가 존재한다. 이 함수와 lateral view 명령어를 이용하면 array, map을 쉽게 처리할 수 있다. 사용 방법은 다음과 같다. select mapcolumn from table1;> {"key1" : "value1", "key2" : "value2"} select key, value from table1 lateral view explode(mapcolumn) k as key, value limit 10 ; key1 value1key2 value2 https://cwiki.apache.org/confluence/display/Hive/Langua..
하이브의 UDF는 UDF, UDAF, UDTF 로 구분된다. UDF: 한개의 행에서 동작한다. 입력과 출력은 하나이다. ex) TRIM()UDAF: 집계 함수이다. 여러 행의 데이터를 집계하여 하나의 결과를 출력합니다. ex) COUNT(), SUM()UDTF: 하나의 행을 입력으로 받아서 여러행의 데이터를 반환한다. ex) EXPLODE() 하이브에서 제공하는 기본 UDF를 이용할 수 있고, 사용자가 UDF 를 만들어서 적용할 수 도 있다. 사용자가 UDF를 만들어서 적용하는 방법은 다음과 같다. package sdk.hadoop.hive; import org.apache.hadoop.hive.ql.exec.UDF;import org.apache.hadoop.io.Text; public final cl..
- Total
- Today
- Yesterday
- 정올
- 백준
- mysql
- emr
- SPARK
- Hadoop
- ubuntu
- bash
- HDFS
- hbase
- 파이썬
- Linux
- 알고리즘
- SQL
- nodejs
- 다이나믹
- Python
- 하이브
- build
- 오류
- AWS
- Tez
- 하둡
- error
- S3
- java
- HIVE
- airflow
- oozie
- yarn
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |