본문 바로가기
빅데이터/hive

[hive] ORC 파일 포맷

by hs_seo 2016. 12. 28.

ORC(Optimized Row Columnar) 파일 포맷


ORC 파일 포맷은 하이브의 처리 속도를 높이기 위하여 개발 되었다


하이브가 처음에 사용한 TextFile, SequenceFile 포맷의 처리속도를 높이기 위하여 RCFile 포맷이 개발 되었다

RCFile 포맷은 각 컬럼을 하나의 파일 묶음으로 만들었기 때문에 각 노드에 분산 처리된 데이터를 모으는 비용이 많이 들어가게 된다

이를 극복하기 위하여 제안된 것이 ORC 파일 포맷이다.

ORC 포맷은 칼럼 단위로 데이터를 기록하고, 인덱스를 기록하여 컬럼에 바로 접근할 수 있기 때문에 속도가 빨라진다. 

 

ORC 포맷은 호튼웍스의 부사장 오웬오말리가 제안한 것으로 하나의 파일에 칼럼을 json 처럼 중첩구조로 구성할 수 있고, 리스트, 맵과 같은 복합형태로 구조를 가져갈 수 있기 때문에 오픈 소스 진영에서 많은 관심을 받고 있다.

 

특징


- 각 태스크의 결과가 하나의 파일로 생성됨: 네임노드의 부하를 줄여줌

- datetime, decimal, complex type(struct, list, map, union)을 지원 

- 파일에 경량 인덱스가 저장됨

- 파일 경량 인덱스가 저장됨 

- 필터링 조건이 없는 로우 그룹은 스킵

- 특정 row 로 seek 가능

- 데이터 타입 기반의 block-mode 압축

- integer 컬럼은 run-length encoding 을 사용

- 문자열 컬럼은 dictionary enocding 을 사용 

- 하나의 파일을 여러개의 리더로 동시 읽기 가능

- 마커 스캐닝 없이 파일 분할 가능

- 파일 읽기 쓰기에 일정한 메모리 용량만 필요

- 필드의 추가나 제거가 가능한 메타 데이터는 Protocol Buffers 를 사용해서 저장





파일구조

 



 









반응형