파일Merge
너무 많은 파일이나 중복된 파일이 HDFS블록 크기보다 작을경우 네임노드의 메모리를 소진시킨다. Hive의 경우 작은 파일을 많이 만들지 않도록 파일병합을 설정할 수 있다.
1. Merge 설정
SET hive.merge.mapfiles : 맵전용 잡의 작은 파일들을 병합한다.(Default true)
SET hive.merge.mapredfiles : 맵리듀스 잡의 결과들을 병합한다.
SET hive.merge.size.per.task: 작업 종료시 병합된 파일을 크기를 정의한다(Default 256MB)
SET hive.merge.smallfiles.avgsize : 파일 병합을 실행하는 트리거 임계값이다. (Default 16MB)
출력파일의 크기가 hive.merge.smallfiles.avgsize보다 작으면 병합을 실시한다.
작업 평균출력파일크기가 이 숫자보다 작을 때( hive.merge.smallfiles.avgsize ) Hive는 출력파일을 더 큰 파일로 병합하는 작업을 시작한다.
2. Query를 사용
MapReduce 작업 수를 설정하여 최종 출력파일이 항상 1이 되도록 조정한다.
- SET mapred.reduce.tasks=1
overwrite로 테이블에 삽입하여 작은 수의 파일들을 병합
- INSERT overwrite table <table_name> SELECT * FROM <table_name>;
참조 :
https://docs.cloudera.com/documentation/enterprise/5-9-x/topics/introduction_compression_snappy.html
댓글 없음:
댓글 쓰기