2016-11-24 4 views
0

작은 파일 (2MB)이 있습니다. 이 파일 위에 외부 하이브 테이블을 만들었습니다 (텍스트 파일로 저장 됨). 다른 테이블 (ORC로 저장 됨)을 생성하고 이전 테이블의 데이터를 복사했습니다. ORC 테이블에서 데이터의 크기를 확인할 때 2MB가 넘었습니다.
ORC는 압축 된 파일 형식이므로 데이터 크기가 작아서는 안됩니까?파일 형식이 다른 하이브의 파일 크기가

+0

누구든지이 질문에 답변 할 수 있습니까? –

답변

1

원본 파일이 너무 작기 때문입니다. ORC는 내부 인덱스, 헤더, 푸터, 포스트 스크립트, 코덱 압축 등의 복잡한 구조를 가지고 있습니다. 자세히보기 : https://cwiki.apache.org/confluence/display/Hive/LanguageManual+ORC#LanguageManualORC-ORCFileFormat 이러한 모든 지원 구조는 데이터보다 많은 공간을 사용합니다. 이러한 작은 파일의 경우 열에 최소/최대 값을 저장할 필요가없고 파일이 메모리에 들어갈 수 있기 때문에 블럼 필터가 필요하지 않습니다. 이 경우에 가장 적합한 저장소는 압축되지 않은 텍스트 파일입니다. 소스 파일을 gzip으로 압축하여 크기를 확인할 수도 있습니다. 너무 작은 gzipped 파일은 압축되지 않은 것보다 클 수 있습니다. 파일이 클수록 오크 압축 및 사용의 이점이 커집니다.

1

하이브 0.14부터 사용자는 테이블이나 파티션에서 CONCATENATE 명령을 실행하여 작은 ORC 파일을 효율적으로 병합하도록 요청할 수 있습니다. 파일은 재 초기화없이 스트라이프 레벨에서 병합됩니다.

ALTER TABLE istari [PARTITION partition_spec] CONCATENATE;