Cloudera CDH/CDP 및 Hadoop EcoSystem, Semantic IoT등의 개발/운영 기술을 정리합니다. gooper@gooper.com로 문의 주세요.
hive테이블의 물리적인 위치인 HDFS에 여러개의 데이터 파일이 존재할때 한개의 파일로 만들어서 다시 동일한 테이블에 입력하는 hive쿼리는 다음과 같다.
(1번, 2번 모두 가능함)
1.
set mapreduce.job.running.map.limit=1;
set mapreduce.job.running.reduce.limit=1;
insert overwrite table temp.tb_test select * from temp.tb_test;
2.
insert overwrite table temp.tb_test select * from temp.tb_test;
를 실행하면 hive에서 실행하면 목적지 테이블에 데이터를 입력할 때 select된 데이터에 한해서 자동으로 merge해서 입력한다.
1번 쿼리를 impala에서 실행하면 set구문이 인식이 안되어 오류가 발생하며 set구문없이 2번 쿼리를 실행하면 파일 개수에는 변함이 잆이 동일한 개수의 파일로 데이터가 overwrite된다.