본문 바로가기

udtf3

[hive] inline() 함수를 이용하여 JSON 문자열 테이블화 예제 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) 2018. 11. 21.
[hive] explode, lateral view 사용 예제 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.. 2017. 12. 26.
[hive] 하이브의 UDF, UDAF, UDTF 하이브의 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.. 2017. 3. 22.