Hive에서 SELECT 결과를 테이블로 INSERT 하기
· Version : Hive
Hive에서 쿼리 결과를 테이블에 입력할때, 이미 존재하는 테이블에 데이터를 입력할수도 있으며, 새로운 테이블을 생성하며 데이터를 입력할 수도 있다. 이미 존재하는 테이블에 SELECT된 결과를 저장할 때는 INSERT 구문을 사용한다. OVERWRITE 예약어를 사용하여 해당 파티션의 데이터를 교체할 수 있다. OVERWRITE 예약어를 INTO로 변경하면 하이브는 데이터를 교체하지 않고 원래 데이터에 추가한다.
INSERT OVERWRITE TABLE tbl_new PARTITION (month = '1', day = '1') select * from tbl_origin as origin where origin.month = '1' and origin.day = '1'; |
만약 여러 파티션 데이터를 만들때, 각 파티션별로 INSERT 구문을 만들면 반복해서 데이터를 읽어야 하는 비효율적인 부분이 발생한다. 하이브는 입력 데이터를 한번 읽어서 이를 다수의 테이블로 분산하는 문법을 제공한다.
from tbl_origin as origin INSERT OVERWRITE TABLE tbl_new PARTITION (month = '1', day = '1') select * where origin.month = '1' and origin.day = '1' INSERT OVERWRITE TABLE tbl_new PARTITION (month = '2', day = '1') select * where origin.month = '2' and origin.day = '1' INSERT OVERWRITE TABLE tbl_new PARTITION (month = '3', day = '1') select * where origin.month = '3' and origin.day = '1'; |
SELECT 결과물을 새로운 테이블을 생성하면서 저장하는 방법은 CREATE 구문을 사용할 수 있다.
CREATE TABLE tbl_create AS SELECT col1, col2, col3 from tbl_origin where month = '1' and day = '1'; |
2020-07-13 / Sungwook Kang / http://sungwookkang.com
Hadoop, Big Data, 하둡, 빅데이터, 데이터분석, HDFS, 하둡 파일 시스템, Hive, 하이브, 하이브 테이블, Hive table, 하이브쿼리, Hive SQL, 데이터 저장, INSERT SELECT
'SW Engineering > Hadoop' 카테고리의 다른 글
HDFS fsimage와 에디트 로그 (0) | 2020.07.15 |
---|---|
Hive는 무조건 MapReduce를 사용할까? (0) | 2020.07.15 |
Hive 테이블 삭제, 수정 (0) | 2020.07.08 |
Hive 파티션 테이블에서 where 없는 쿼리 실행 방지 (0) | 2020.07.02 |
Hive 매니지드 테이블 및 외부 테이블 (0) | 2020.06.25 |