5호03 / 05

Polars 2.0 — 스트리밍 엔진이 기본, 행 순서는 더 이상 보장 안 함

원문 Polars Blog ↗

Polars가 10월 6일 2.0을 발표했습니다. 1.0이 API 안정화였다면 2.0은 실행 엔진 교체입니다.

핵심 변경

스트리밍 엔진이 기본. 1.x에서 옵션으로 켜던 스트리밍 엔진이 기본 실행 경로가 됐습니다. 메모리에 다 올리지 않고 청크 단위로 처리하므로, 메모리보다 큰 데이터가 기본으로 돌아갑니다(out-of-core).

행 순서를 보장하지 않습니다. 병렬 스트리밍의 대가입니다. group_by, join 등의 결과 순서가 실행마다 다를 수 있습니다. 이전과 같은 순서가 필요하면 **maintain_order=True**를 명시해야 하고, 그러면 느려집니다.

Map 타입. 키-값 쌍을 담는 데이터 타입이 추가됐습니다. Arrow의 Map과 대응됩니다.

더 엄격한 오류. 1.x에서 묵시적으로 캐스팅하거나 null로 넘어가던 연산 일부가 2.0에서는 오류를 냅니다. 의도된 변경이고, 조용히 틀린 결과를 내는 것보다 낫다는 판단입니다.

벤치마크

글은 DataFusion, DuckDB와 비교한 수치를 싣고 있습니다. 메모리보다 큰 데이터에서 Polars가 유리하다는 구성입니다. 벤치마크는 발표자가 고른 워크로드라는 점은 늘 같습니다. 자기 쿼리로 재는 것만 의미가 있습니다.

글에 없는 것

1.x의 지원 기간, 마이그레이션 도구의 유무는 글에 없습니다. 순서 비보장이 어떤 연산에 적용되고 어떤 연산은 여전히 순서를 유지하는지의 정확한 목록도 문서를 봐야 합니다.

실무에서 할 일

올리기 전에 할 일은 하나입니다. 결과 순서에 의존하는 코드를 찾는 것. .head()로 "첫 몇 개"를 보는 코드, 순서대로 파일에 쓰는 코드, 인덱스 위치로 행을 집는 코드가 전부 해당합니다. 테스트가 "같은 행 집합"이 아니라 "같은 순서"를 비교하고 있으면 2.0에서 불규칙하게 깨집니다. 정렬을 명시하거나 maintain_order=True를 주고, 그 비용을 측정하세요.

  1. 01Deno 팀이 Cloudflare로 간다 — Deno 런타임은 1년 뒤 개발 종료, Deploy는 6개월 뒤 종료
  2. 02Python 3.15 — 지연 import, frozendict, UTF-8 기본, 그리고 JIT가 처음으로 빨라졌다
  3. 03Polars 2.0 — 스트리밍 엔진이 기본, 행 순서는 더 이상 보장 안 함지금 읽는 글
  4. 0410월 11일 DNS 루트 키 교체 — 2017년 이후 처음, 리졸버를 점검할 때
  5. 05Apple, macOS 전체 디스크 접근을 더 어렵게 만든다 — AI 에이전트를 명시

2026년 10월 6일에 올라온 글

그날 대시보드 →
  1. ·10월 11일 DNS 루트 키 교체 — 2017년 이후 처음, 리졸버를 점검할 때

댓글

불러오는 중…