하이브에서 FROM INSERT 문을 이용하여 한번에 여러곳에 데이터를 입력할때 다음과 같이 사용합니다.
[FROM INSERT 문을 이용한 입력 예시]
FROM ( SELECT * FROM tbl )
INSERT tableA
INSERT tableB
[TEZ 엔진 실행 결과]
----------------------------------------------------------------------------------------------
VERTICES MODE STATUS TOTAL COMPLETED RUNNING PENDING FAILED KILLED
----------------------------------------------------------------------------------------------
Map 1 .......... container SUCCEEDED 13 13 0 0 0 0
Map 2 .......... container SUCCEEDED 1 1 0 0 0 0
----------------------------------------------------------------------------------------------
VERTICES: 02/02 [==========================>>] 100% ELAPSED TIME: 712.86 s
----------------------------------------------------------------------------------------------
이때 최종적으로 생성되는 파일의 개수는 매퍼의 개수인 13개입니다. 각 테이블의 위치마다 13개씩 총 26개의 파일이 생성됩니다.
만약 매퍼의 수가 많아진다면 그만큼의 파일이 생성되고 이는 HDFS에 부담이 됩니다. 따라서 파일의 개수를 줄이기 위해 적당한 크기의 파일로 묶는 머지 작업을 추가 하게 됩니다.
[32MB 보다 작은 파일을 모아서 256MB 파일로 묶음]
set hive.merge.mapfiles=true;
set hive.merge.mapredfiles=true;
set hive.merge.tezfiles=true;
set hive.merge.size.per.task=256000000;
set hive.merge.smallfiles.avgsize=32000000;
파일 머지 작업은 파일의 개수를 줄여서 HDFS의 부담을 줄일 수 있지만, 작업에 따라 시간이 오래 걸릴 수 있습니다.
1KB의 파일이 3000~4000 개씩 생성되었을 때 이 파일을 하나로 묶는 작업에 시간이 많이 걸리기 때문입니다.
VERTICES MODE STATUS TOTAL COMPLETED RUNNING PENDING FAILED KILLED
----------------------------------------------------------------------------------------------
Map 1 .......... container SUCCEEDED 13 13 0 0 0 0
Map 6 .......... container SUCCEEDED 1 1 0 0 0 0
Reducer 2 ...... container SUCCEEDED 2 2 0 0 0 1
Reducer 3 ...... container SUCCEEDED 2 2 0 0 0 2
Reducer 4 ...... container SUCCEEDED 4 4 0 0 0 0
Reducer 5 ...... container SUCCEEDED 4 4 0 0 0 0
----------------------------------------------------------------------------------------------
VERTICES: 06/06 [==========================>>] 100% ELAPSED TIME: 893.55 s
----------------------------------------------------------------------------------------------
INSERT tableA SORT BY col1
'빅데이터 > hive' 카테고리의 다른 글
[hive] 하이브 3의 특징 (0) | 2019.02.25 |
---|---|
[hive] CLI 동작중 에러 발생시 무시하기 (0) | 2019.02.22 |
[hive] 테이블 파티션의 로케이션 정보 확인, 생성, 수정 방법 (0) | 2019.01.17 |
[hive] 쿼리 실행중 MetaException 발생시 오류 처리 (0) | 2018.12.04 |
[hive] inline() 함수를 이용하여 JSON 문자열 테이블화 예제 (0) | 2018.11.21 |