데이터 엔지니어 기술 블로그

[데이터 엔지니어링] Apache Parquet 정리 본문

데이터 엔지니어링

[데이터 엔지니어링] Apache Parquet 정리

jun_yeong_park 2021. 3. 8. 17:19
반응형

Apache Hadoop 에코 시스템의 column-oriented 데이터 스토리지 포맷입니다. Hadoop에서 사용할 수 있는 column-oriented 파일 형식 RCFile, ORC와 유사합니다. 향상된 성능과 함께 효율적인 데이터 압축 및 인코딩 체계를 제공합니다.

기존 Hadoop 컬럼 스토리지 형식인 Trevni을 개선하기 위해 설계되었습니다.

Parquet

기능

column-oriented

1. 각 열의 값은 인접한 메모리 위치에 물리적으로 저장됩니다.

2. 열 단위 압축은 효율적이어서 저장 공간을 절약합니다.

3. 같은 열의 값은 비슷한 유형이므로 유형별 압축 기술이 필요하지 않습니다.

4. 특정 열 값을 가져오는 쿼리는 전체 행을 읽지 않고 일부 열만 읽습니다.

5. 열마다 다른 인코딩을 적용할 수 있습니다.

 

Apache Thrift 프레임워크 위에서 동작함

1. Apache Thrift는 RPC(Remote Procedure Call) 프레임워크 중 하나이다.

2. C++, Java, Python, PHP 등 여러 언어에서 쉽게 핸들링 할 수 있다.

 

압축 및 인코딩

압축은 열 단위로 수행되므로, 열마다 서로 다른 인코딩을 적용할 수 있습니다.

 

Dictionary encoding

1. Parquet에는 적은 수의 고유 값(10^5 미만)의 데이터에 대해 동적으로 활성화 된 자동 사전 인코딩이 있어서 압축을 가능하게 합니다.

출처: https://www.google.com/url?sa=i&url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DqO19qbvgTqs&psig=AOvVaw1vjYqV5WLpXpTybGtZpsvl&ust=1615277468191000&source=images&cd=vfe&ved=0CAIQjRxqFwoTCNix3tKfoO8CFQAAAAAdAAAAABAI

Bit packing

1. 작은 정수의 경우 여러 정수를 동일한 공간에 패킹하여 저장 효율을 향상시킵니다.

출처: https://www.google.com/url?sa=i&url=https%3A%2F%2Fgithub.com%2FGuenael%2Fairspy-wsprd%2Fissues%2F1&psig=AOvVaw1_CYFF8tWxJBUT2_3FsCni&ust=1615277565839000&source=images&cd=vfe&ved=0CAIQjRxqFwoTCPjAif6foO8CFQAAAAAdAAAAABAD

Run-length encoding(RLE)

1. WWWWWWWBWW를 W7B1W2와 같은 방식으로 압축합니다.

 



기타

Parquet 1.0 발표 트위터

blog.twitter.com/engineering/en_us/a/2013/announcing-parquet-10-columnar-storage-for-hadoop.html

 

Announcing Parquet 1.0: Columnar Storage for Hadoop

Announcing Parquet 1.0: Columnar Storage for Hadoop

blog.twitter.com

 

 

반응형
Comments