본문 바로가기

Machine Learning/파이썬 Python

pyarrow, parquet 파케이 파켓

대용량 파일을 읽을 수 있는 라이브러리

메모리 내 분석을 위한 개발 플랫폼

빅데이터를 빠르게 처리할 수 있다.

 

$pip install pyarrow

 

csv를 pandas보다 빠르게 읽어 온다.

 

from pyarray import csv

df = csv.read_csv("file.csv").to_pandas()

 

parquet 파일을 생성하고 읽을 수 있다.

df.to_parquet('df.parquet', engine='pyarrow', compression='snappy')

데이터프레임을 df.parquet파일로 만들어준다.

 

parquet(칼럼 기반 저장 포맷)

칼럼단위로 구성하면 데이터가 균일하므로 압축률이 높다.

필요한 컬럼만 읽으므로 디스크 IO가 적다.

컬럼별로 적합한 인코딩을 사용할 수 있다.

 

snappy

parguet포맷에서 기본적으로 사용하는 압축라이브러리.

구글 자체 개발

적당히 빠르고 적당히 압축

압축률이 좋지만 빌드 관련해 의존패키지를 설치해야하고, 의존성 라이브러리 이슈가 생기기도 한다.

snappy보다 압축속도는 느려도 압축률이 좋은 gipz을 사용하기도 한다.

 

parquet 파일 읽기

import pandas as pd

pd = pd.read_parquet('df.parquet')

혹은

$ pip3 install parquet-tools

$ parquet-tools show df.parquet -테이블 형식으로 보기

$ parquet-tools show s3://bucket-name/prefix/* -s3

$ parquet-tools inspect /path/to/parquet -메타데이터 확인