티스토리 뷰

빅데이터/hive

[hive] ORC 파일 포맷

hs_seo 2016. 12. 28. 23:05

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 를 사용해서 저장





파일구조

 



 









반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함