아파치 파케이(Apache Parquet)는 대규모 데이터 처리 시스템에서 사용되는 컬럼 기반의 오픈 소스 데이터 저장 포맷이다. 특히 분석 쿼리 성능을 최적화하고 저장 공간 효율성을 높이는 데 중점을 둔다.
개요 아파치 파케이는 하둡(Hadoop) 생태계에서 널리 사용되며, Apache Spark, Apache Hive, Apache Impala 등 다양한 데이터 처리 엔진과 높은 호환성을 제공한다. 로우(row) 단위로 데이터를 저장하는 전통적인 포맷(예: CSV, JSON)과 달리, 컬럼(column) 단위로 데이터를 저장하는 특성을 가진다. 이러한 컬럼 기반의 저장 방식은 OLAP(온라인 분석 처리) 쿼리에 최적화되어, 필요한 특정 컬럼만 읽을 수 있게 하여 I/O(입출력) 비용을 줄이고 쿼리 속도를 향상시킨다. 또한, 높은 압축률과 효율적인 인코딩 방식을 지원하여 저장 공간을 절약하는 데 크게 기여한다.
어원/유래 "Parquet"이라는 이름은 프랑스어 "parquet"에서 유래했을 것으로 추정되며, 이는 쪽매붙임 마루를 의미한다. 데이터가 컬럼 단위로 조각나서 효율적으로 배치되는 방식에 대한 비유적인 의미를 내포하는 것으로 해석될 수 있다. 아파치 파케이 프로젝트는 2013년 Cloudera와 Twitter의 주도로 시작되었으며, 이후 아파치 소프트웨어 재단(Apache Software Foundation)의 최상위 프로젝트(Top-Level Project, TLP)로 발전했다. 대규모 데이터 분석 환경에서 성능 및 효율성 문제를 해결하고자 개발되었다.
특징
- 컬럼 기반 저장 (Columnar Storage): 데이터를 로우 단위가 아닌 컬럼 단위로 저장한다. 이는 특정 컬럼에 대한 쿼리 시 불필요한 데이터를 읽지 않아 I/O 효율을 극대화한다.
- 높은 압축률 및 효율적인 인코딩: 컬럼별 데이터 유형과 특성을 고려한 다양한 압축(예: Snappy, Gzip, LZO) 및 인코딩(예: Dictionary, Run Length) 기법을 지원하여 저장 공간을 크게 절약한다.
- 스키마 포함 (Self-describing): 데이터 파일 내부에 스키마(Schema) 정보가 함께 저장되어 있어 데이터를 해석하기 위한 별도의 스키마 정의가 필요 없다.
- 분할 가능 (Splittable): 파일이 블록 단위로 분할 가능하며, 이는 하둡과 같은 분산 시스템에서 여러 노드에 걸쳐 병렬 처리를 용이하게 한다.
- 술어 푸시다운 (Predicate Pushdown): 쿼리 조건(필터)을 데이터 읽기 단계에서 미리 적용하여, 조건에 해당하지 않는 데이터를 디스크에서 메모리로 로드하는 것을 방지함으로써 쿼리 성능을 향상시킨다.
- 복합 데이터 타입 지원: 중첩된(nested) 데이터 구조(예: JSON, Avro 레코드)를 효율적으로 저장할 수 있다.
- 언어 및 플랫폼 독립적: 다양한 프로그래밍 언어(Java, Python, C++, Go 등)와 데이터 처리 엔진에서 폭넓게 지원되어 상호 운용성이 높다.
관련 항목
- Apache ORC (Optimized Row Columnar)
- Apache Avro
- Apache Spark
- Apache Hadoop
- 데이터 웨어하우스 (Data Warehouse)
- OLAP (Online Analytical Processing)