Apache Arrow
Apache Arriow는 컬럼 형식의 데이터를 처리하는 데이터 분석 애플리케이션을 개발하기 위한 프레임워크다. Apache Parquet, Apache Spark, Numpy, Pandas 등의 데이터 처리 라이브러리와 함께 사용할 수 있는데, 이 글에서는 Arrow를 사용해 Parquet 파일을 다루는 방법을 간단히 정리하려고 한다.
설치
Python에서 Apache Arrow를 사용할 때는 pip나 conda를 사용해 pyarrow라는 이름의 라이브러리를 설치해야 한다.
pip install pyarrow
참고로 2024-02-16일 기준 최신 버전인 Apache Arrow 15.0에서는 Numpy 1.16.6 이상의 버전을 요구하고, Pandas를 사용한다면 1.0 이상의 버전이 필요하다.
임포트
pyarrow를 사용할 때는 일반적으로 pa라는 알리아스로 사용하는 것 같다. 이 글에서는 parquet 파일을 다루기 때문에 pyarrow.parquet를 import 했다.
import pyarrow as pa
import pyarrow.parquet as pq
parquet 파일 읽기
parquet 파일을 읽을 때는 pyarrow.parquet.read_table 함수에 파일의 경로를 전달한다. 만약 특정 열만 골라서 읽을 때면 columns 매개변수에 읽을 열을 리스트로 전달하면 된다.
parquet_path = '/path/example.parquet'
pq.read_table(parquet_path)
read_table로 읽은 데이터를 출력하면 컬럼 목록과 컬럼 별 데이터를 확인할 수 있다. 만약 Pandas DataFrame 형태로 다루고 싶다면 to_pandas 함수를 사용하면 된다.
pq.read_table(parquet_path, columns=['sepal.length', 'variety']).to_pandas()
parquet 파일 쓰기
parquet 파일을 쓸 때는 write_table 함수에 파일로 쓸 테이블과 경로를 지정한다.
table = pq.read_table(parquet_path, columns=['sepal.length', 'variety'])
pq.write_table(table, '/path/output.parquet')
만약 Pandas DataFrame을 parquet 파일로 저장하고 싶다면, DataFrame을 Arrow 테이블로 변환한 뒤 write_table 함수를 수행하면 된다.
pq.write_table(pa.Table.from_pandas(df), '/path/output.parquet')
참고 문서
https://arrow.apache.org/docs/python/install.html
https://arrow.apache.org/docs/python/parquet.html
https://www.tablab.app/datasets/sample/parquet