Parquet이란?

김기현·2023년 1월 3일
0

서론

회사 코드를 보니 data lake로 사용되는 s3에 데이터를 올릴 때 pandas의 to_parquet 메서드를 활용해 parquet 형태로 변환 해서 저장하는 것을 보았다.
새로 보는 형식이어서 저장하려고 한다.
Parquet는 나무조각을 붙여 만든 마루바닥이라는 뜻으로 트위터에서 개발했다.

Hadoop EcoSystem Format

data를 저장하는 방식 중 하나로 hadoop Eco Sytstem에서 많이 사용되는 format

장점

  1. 빠른 읽기 - 디스크 IO가 적다. 컬럼 단위로 데이터가 저장되어 필요한 컬럼만 읽어 속도 빠름
  2. 높은 압축률 - 컬럼 단위로 구성하여 데이터가 균일 해 압축률이 높아 파일 크기도 작다.
  3. 종속되지 않는 언어
  4. 컬럼 별로 적합한 인코딩을 사용 가능 - 성능에 유리한 인코딩 방식으로 포맷팅 가능

비슷한 것으로는 ORC, avro가 있다.

컬럼 기반 저장 포맷

컬럼 기반 스토리지에 의한 고속화 때문에 속도가 빠름
데이터를 미리 컬럼 단위로 압축시키고 필요한 컬럼마 빠르게 읽고 집계하는 것이 빠르다.

Parquet 실습

parquet 사용 방법
  1. pandas.to_parquet
  2. pyarrow 라이브러리 이용 - 대용량 파일을 읽기 위한 라이브러리, 메모리 내 분석을 위한 개발 플랫폼
snappy 라이브러리

snappy는 parquet에서 기본적으로 사용하는 압축라이브러리로 구글에서 개발하였으며
적당히 빠르고 적당히 압축 및 해제하는 것을 목표로 만들었다. 압축률이 좋지만 의존 라이브러리 들이 있고 종종 이슈가 있어 까다로움
그래서 대신 gipz를 사용하기도 한다.

parquet 읽는 방법
  1. pandas.read_parquet()를 사용한다면 dataframe 형태로 읽을 수 있음
  2. parquet-tools
profile
To Be Spark'ling Engineer

0개의 댓글