식빵/cs

parquet (파케이) 란?

식빵굽는사람 2026. 2. 9. 23:12

agent rl 레포 하나를 뜯어보다가 데이터가 저장 방식이 parquet으로 저장된 것을 보았습니다.

parquet 정의, 장점, 파일 구조 까지...

 

Parquet:

데이터 저장방식 중 하나로 column 단위로 데이터가 저장이 되어서 필요한 컬럼만 빠르게 읽고 집계하는데 빠르다

 

테이블이 아래와 같이 있다면,,

테이블

행기반은

열기반은

요렇게 되어있다는거죠. column이 열이니까

 

그래서 장점은 요렇습니다.

 

장점

  • column 단위로 구성하면 데이터가 더 균일하므로 압축률이 높아짐
  • 디스크 I/O 감소. column 단위로 데이터가 저장되어 다른 컬럼의 데이터에서는 I/O 발생 x
  • 컬럼의 데이터 유형에 따라 적절한 인코딩 방식 사용 가능

 

파일구조

포맷은 아래와 같은데요. N column M row 그룹의 테이블을 예시로 한 포맷입니다.

4-byte magic number "PAR1"
    <Column 1 Chunk 1>
    <Column 2 Chunk 1>
    ...
    <Column N Chunk 1>
    <Column 1 Chunk 2>
    <Column 2 Chunk 2>
    ...
    <Column N Chunk 2>
    ...
    <Column 1 Chunk M>
    <Column 2 Chunk M>
    ...
    <Column N Chunk M>
    File Metadata
    4-byte length in bytes of file metadata (little endian)
    4-byte magic number "PAR1"

 

메타데이터는 컬럼 청크의 시작 위치를 담고 있습니다.

따라서 메타데이터를 먼저 읽어 관심 있는 column chunks를 찾고 순차적으로 읽는 방식으로 구성되어 있습니다.

 

그리고 parquet 같은 경우는 메타데이터와 데이터를 명확하게 분리하도록 설계되어 있습니다.

따라서 열을 여러 파일로 분할할 수 있을 뿐 아니라, 하나의 메타데이터 파일이 여러 개의 parquet 파일을 참조할 수 있습니다.

 

 

그림으로 표현하면 다음과 같습니다.

parquet 구조 도식화
parquet

 

 

REFERENCE

https://parquet.apache.org/docs/