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 를 사용해서 저장
파일구조
ORC 파일 리뷰 - http://blog.kthdaisy.com:8080/orcfile-review/
'빅데이터 > hive' 카테고리의 다른 글
[hive][error] SemanticException Column "칼럼명" Found in more than One Tables/Subqueries (0) | 2017.01.06 |
---|---|
[hive][hql] hive 2 의 hqlsql 사용해보기 (0) | 2017.01.03 |
[hive][error] msck repair table 처리시 오류 수정 (0) | 2016.12.20 |
[hive] Hive 2의 특징 (0) | 2016.12.08 |
[hive][error] java.io.IOException: Not a file (0) | 2016.12.01 |