개요
2024.03.08 - Apache Parquet 이란 - 1에 이어서 parquet 파일에 대한 개념을 계속 정리한다.
메타데이터
parquet 파일에는 파일 메타데이터, 컬럼 메타데이터, 페이지 헤더 메타데이터가 존재한다.
데이터 타입
파일 포맷에서 지원하는 데이터 타입은 디스크에 미치는 영향을 최소화하도록 설계되었으며, 지원하고 있는 데이터 타입은 아래와 같다.
- BOOLEAN: 1 bit boolean
- INT32: 32 bit signed ints
- INT64: 64 bit signed ints
- INT96: 96 bit signed ints
- FLOAT: IEEE 32-bit floating point values
- DOUBLE: IEEE 64-bit floating point values
- BYTE_ARRAY: arbitrarily long byte arrays
- FIXED_LEN_BYTE_ARRAY: fixed length byte arrays
또한 parquet은 primitive type을 해석하는 방법을 지정하는 논리 타입을 이용해 데이터 타입을 확장할 수 있다. 논리 타입은 primitive type을 최소한으로 유지하고 인코딩을 재사용할 수 있게 한다.
Nested Encoding
중첩된 컬럼을 인코딩하기 위해 parquet은 정의 레벨(definition level)과 반복 레벨(repetition level)을 사용한 Dremel 인코딩 방식을 사용한다. 정의 레벨은 컬럼 경로에 정의된 optional field의 수를 지정하고, 반복 레벨은 값이 반복되는 필드를 지정한다. 최대 정의 레벨과 반복 레벨은 스키마에서 계산되며, 레벨을 저장하는데 필요한 최대 비트 수를 정의한다.
참고 문서
https://parquet.apache.org/docs/overview/motivation/
https://data-engineer-tech.tistory.com/52