https://sparkdia.tistory.com/56
stored as 저장형식명
파일 형식을 그냥 쉽게 표현하자면 하이브에서 테이블 형태로 보여지는 데이터를 어떤 구조로 HDFS에 저장하며,
어떤 압축 방식을 사용할 것인지 정의한 저장 방식
-
textfile
- 일반적으로 external 테이블 생성시 사용한다.
- 특정 구분자로 필드와 로우가 구별되어야 하며 이는 delimited 옵션으로 구분자를 줄 수 있다.
- 노 압축
-
SEQUENCEFILE
- 압축
로우기반
데이터 저장
- 컬럼이 적은 테이블에 적용
-
RCFILE
ROW 기반 VS COLUMN 기반
-
ORC
- RCfile 개선
- 컬럼기반 저장방식
- 각 태스크의 결과가 하나의 파일로 생성되어 네임노드의 부하가 감소됨.
- Datetime, Decimal, complex types (struct, list, map, and union)등의 하이브 데이터 타입을 지원함.
- 파일에경량 인덱스가 저장됨..
- 필터링 조건에 부합하지 않는 로우 그룹은 skip함..
- 특정 row로 바로 탐색이 가능.
- 데이터 타입 기반의 block-mode 압축..
- Integer 컬럼은run-length encoding을 사용함..
- String 컬럼은dictionary encoding을 사용함.
- 하나의 파일을 여러 개의 레코드리더를 사용해 동시 읽기 가능함
- 마커 스캐닝 없이 파일 분할이 가능함.
- 읽거나 쓰기에 필요한 메모리의 용량을 제한 가능함
- 메타 데이터를 Protocol Buffers를 사용해 저장함으로써 필드의 추가/삭제가 가능함.
하이브와 피그만 지원
-
PARQUET
- 컬럼기반
- 다양한 하둡 에코 시스템 지원
- Google Protocol Buffers와 비슷한 모델을 사용합니다. 이로 인해 복잡하게
중첩된 데이터 구조(List, Maps, Sets)를 효율적으로 저장
-
AVRO
데이터 직렬화
- 하이브에서는 avro serde를 통해 활용
- 하둡의 직렬화방식이 가지는 단점인 언어 이식성을 해결하기 위해 만들어짐
- 데이터 파일에
스키마 정보를 같이 저장
/ schema on write 가능
- json형태 이나 위의 설명같이 스키마 정보를 저장
- 구글 프로토버프랑 유사?
-
JSONFILE