Polars

Polars

PolarsOLAP 쿼리 엔진 위에서 동작하는 인메모리 DataFrame 라이브러리예요. 빠르고 사용하기 쉬우며 오픈소스로 제공돼요.

출처: 문서

본문

버전 1.2.0부터 Polars는 Hugging Face 파일 시스템을 네이티브 지원해요. 즉 Polars 쿼리 최적화 프로그램의 모든 장점(예: predicate 및 projection pushdown)이 적용되어, Polars가 쿼리를 완료하는 데 필요한 데이터만 로드해요. 특히 대용량 데이터셋을 읽을 때 속도가 크게 빨라지죠(최적화 참고).

Hugging Face 경로(hf://)를 사용해 Hub의 데이터에 접근할 수 있어요.

시작하기

Polars를 환경에 pip install 하면 시작할 수 있어요.

pip install polars

Polars를 설치한 뒤에는 Hugging Face URL을 기반으로 데이터셋을 바로 쿼리할 수 있어요. 별도의 다른 의존성은 필요 없어요.

import polars as pl

pl.read_parquet("hf://datasets/roneneldan/TinyStories/data/train-00000-of-00004-2d5a1467fff1081b.parquet")

[!TIP] Polars는 두 가지 API를 제공해요. 지연(lazy) API(scan_parquet)와 즉시(eager) API(read_parquet)죠. 대화형 워크로드에는 eager API를, 성능이 중요할 때는 쿼리 최적화가 더 나은 lazy API를 권장해요. 자세한 내용은 Polars 사용자 가이드를 참고하세요.

Polars는 globbing을 지원해서 여러 파일을 한 번에 하나의 DataFrame으로 다운로드할 수 있어요.

pl.read_parquet("hf://datasets/roneneldan/TinyStories/data/train-*.parquet")

Hugging Face URL

Hugging Face URL은 usernamedataset 이름으로 다음과 같이 만들 수 있어요.

  • hf://datasets/{username}/{dataset}/{path_to_file}

경로에는 **/*.parquet 같은 globbing 패턴이 포함될 수 있어, 패턴과 일치하는 모든 파일을 쿼리해요. 추가로 지원되지 않는 파일 형식의 경우 Hugging Face가 제공하는 자동 변환 parquet 파일을 @~parquet branch로 사용할 수 있어요.

  • hf://datasets/{my-username}/{my-dataset}@~parquet/{path_to_file}

더 알아보기 (Learn more)

Polars 1.2.0+는 hf:// 경로를 네이티브 지원해서 쿼리 최적화가 적용돼요. 대용량 데이터셋은 lazy API(scan_parquet)와 globbing을 조합하면 필요 데이터만 읽어 빠르게 처리할 수 있어요. 비지원 형식은 @~parquet 브랜치의 자동 변환 parquet를 활용하세요.