[HADOOP] 하이브 - 값들의 범위 사이의 복수 행에 행을 분할
HADOOP하이브 - 값들의 범위 사이의 복수 행에 행을 분할
나는 아래의 표를 가지고 시작부터 끝까지 컬럼의 범위에 의해 행을 분할하고 싶습니다.
즉 ID 및 값은 시작 및 끝 (두 값 모두 포함) 사이의 각 값에 대해 반복되어야
--------------------------------------
id | value | start | end
--------------------------------------
1 | 5 | 1 | 4
2 | 8 | 5 | 9
--------------------------------------
원하는 출력
--------------------------------------
id | value | current
--------------------------------------
1 | 5 | 1
1 | 5 | 2
1 | 5 | 3
1 | 5 | 4
2 | 8 | 5
2 | 8 | 6
2 | 8 | 7
2 | 8 | 8
2 | 8 | 9
--------------------------------------
나는이 결과를 얻기 위해 자바 / Python으로 내 자신의 UDF를 작성할 수 있지만이 기존 하이브 UDF를 사용하여 하이브 SQL에서 구현할 수 있는지 확인하고 싶습니다
미리 감사드립니다.
해결법
-
==============================
1.이것은 하이브가 지원하지 않는 재귀 공통 테이블 식으로 수행 할 수 있습니다.
이것은 하이브가 지원하지 않는 재귀 공통 테이블 식으로 수행 할 수 있습니다.
하나의 옵션은 숫자의 테이블을 만들고 시작과 끝 사이의 행을 생성하는 데 사용하는 것입니다.
create table numbers location 'hdfs_location' as select row_number() over(order by somecolumn) as num from some_table --this can be any table with the desired number of rows ; --Join it with the existing table select t.id,t.value,n.num as current from tbl t join numbers n on n.num>=t.start and n.num<=t.end
from https://stackoverflow.com/questions/49961375/hive-split-a-row-into-multiple-rows-between-the-range-of-values by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] 정확히 매퍼 및 감속기 기능의 출력은 무엇입니까 (0) | 2019.09.17 |
---|---|
[HADOOP] 매퍼 작업의 결과는 디스크에서 삭제합니까 언제? (0) | 2019.09.17 |
[HADOOP] 오류 HDFS에 하이브 테이블에 CSV 파일의 데이터를 매핑하는 동안 (0) | 2019.09.17 |
[HADOOP] 때 java.io.IOException : 0 만 노드에 복제 할 수 /tmp/hadoop-eo/mapred/system/jobtracker.info 파일, 대신 2 (0) | 2019.09.17 |
[HADOOP] 하이브는 스파크에 : 스파크 클라이언트를 만들 수 없습니다 (0) | 2019.09.17 |