[HADOOP] 조건에 특정한 값을 증가시키는 방법?
HADOOP조건에 특정한 값을 증가시키는 방법?
나는 아래와 같은 테이블을 가지고있다 :
itm numbr
1 2
11 21
NULL 31
12 41
NULL 51
13 61
아래에 언급 된 것처럼 항목, 번호 및 추가 열로 출력하고 싶습니다.
itm numbr incr
1 2 1
11 21 1
NULL 31 2
12 41 2
NULL 51 3
13 61 3
incr은 ITM이 NULL 인 경우에만 값을 증가시켜야하며, 그렇지 않으면 이전 값과 동일한 값을 표시해야합니다.
1. 나는 row_sequence로 시도했다
select itm,numbr,row_sequence() as incr from tablename;
그러나 1,2,3,4,5,6을 표시합니다.
2. 그런 다음 시도했다
select itm,numbr,case when itm=NULL then row_sequence()+1 else row_sequence() end as incr from table;
"FAILED : RuntimeException org.apache.hadoop.hive.ql.metadata.HiveException : CASE 내부에서 상태 저장 표현식을 사용할 수 없습니다."오류가 발생합니다.
조언 해주세요. 티아.
해결법
-
==============================
1.incr 열의 값은 다른 행의 값에 따라 다르므로 테스트되지 않았지만 분석 기능이 도움이됩니다.
incr 열의 값은 다른 행의 값에 따라 다르므로 테스트되지 않았지만 분석 기능이 도움이됩니다.
WITH tmpincr as ( SELECT itm , nmbr -- get in tmpincr 1 for NULL, 0 for not null , if(isnull(itm), 1, 0) as tmpincr FROM tablename ) SELECT itm , nmbr -- get the sum of tmpincr for all rows before current one when ordered by itm , SUM(tmpincr) OVER ( ORDER BY nmbr ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) as incr FROM tmpincr ORDER BY nmbr ;
-
==============================
2.
UPDATE table_name SET incr = Coalesce(itm, 0) + 1
이 솔루션을 시도하지 않았지만 null 인 경우 1을 추가하고 그렇지 않으면 증가합니다. 필요에 맞게 수정하십시오 =)
from https://stackoverflow.com/questions/46904255/hive-how-to-increment-the-values-specific-to-condition by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] hadoop에서 데이터 노드의 디스크 공간을 알고 있습니까? (0) | 2019.09.15 |
---|---|
[HADOOP] 페이스 북 페이지 / 피드 / 포스트를 읽는 Flume (0) | 2019.09.15 |
[HADOOP] WordCount MapReduce를 실행하는 동안 입력 경로가 없습니다 (0) | 2019.09.15 |
[HADOOP] Pig 사용자 정의 행 / 레코드 구분 기호를 사용하여 파일 저장 (0) | 2019.09.15 |
[HADOOP] MapRe에서 조회를 위해 XML 파일을 읽도록 허용하는 방법 (0) | 2019.09.15 |