Polars 2.0 공개, 스트리밍 엔진과 out-of-core 기본 활성화, TPC 벤치마크에서 DuckDB 앞서
- Polars 2.0 공개. LazyFrame의 collect가 기본으로 스트리밍 엔진을 타고 out-of-core 스필이 기본 활성화됨. 메모리 80% 지점부터 디스크로 넘기며 기본 디스크 예산은 64GB임
- TPC-H와 TPC-DS 벤치마크에서 Polars가 DuckDB 1.5.6, DuckDB 2.0 알파, DataFusion 54.0.0을 한 개를 빼고 전부 앞섬. c7a.4xlarge에서 TPC-H SF100 합계가 Polars 34.63초, DuckDB 1.5.6 42.12초, DataFusion 50.17초임
- DataFusion은 TPC-DS q72에서 타임아웃이 나고 c7a.4xlarge의 TPC-H q18에서 메모리 부족으로 죽어 해당 질의는 모든 엔진 결과에서 제외됨
- 192스레드로 키우면 작은 데이터 질의에 상수 오버헤드가 붙어 32스레드로 제한한 Polars가 전 벤치마크에서 동등하거나 앞섬. 원인은 파악했고 다음 릴리스에서 고칠 예정임
- 스트리밍 엔진은 join, group_by, unpivot에서 행 순서를 보장하지 않아 maintain_order=True로 선택해야 하고, Arrow MapType을 그대로 받는 Map dtype과 엄격해진 dtype 규칙도 함께 들어감
Hacker News 의견들
duckdb도 2.0.0 곧 낸다던데 이 타이밍 우연인가?
사실 오래전부터 2.0 계획했음. 1.0 내고 1.x에서 예상보다 오래 머물긴 했는데, 2.0 브랜치 첫 PR이 2026년 6월에 머지됐더라
내가 제일 궁금한 건 eager vs lazy가 발목 잡던 문제가 정리됐냐임. 내 버그 절반이 루프 안에 collect() 하나 잘못 넣어서 쿼리 플랜 날아간 거였음
Polars가 SQL 되는 줄 오늘 처음 알았음
첫 릴리스부터 있었는데 제한적이었음. 이제 DuckDB랑 정면 승부하려는 것 같음
이쯤 되면 Polars는 그냥 인메모리 데이터베이스 아닌가?
드디어. 퀀트 트레이딩 봇 업그레이드해야지
Polars가 Pandas 완전 대체가 되나? 어느 쪽이 더 맞는 자리가 있는지 궁금
실무 99.9%는 대체 가능함. 예외는 지리 데이터인데, Geopandas에 대응하는 Geopolars가 아직 없음. 개발은 진행 중이라 함
1BRC 벤치에서 pandas 4분 28초, Polars 5.04초, DuckDB 5.19초였음. 속도로는 비교가 안 됨
나노초 해상도 타임스탬프를 읽으면 다시 나노초로 내보낼 방법이 없는 건 좀 걸림
우리 팀은 다 Polars랑 DuckDB로 넘어가는 중
전에는 뭘 썼음?
Polars랑 DataFusion은 요즘 어떤 관계임? 하나로 합쳐질 이유가 없나
DataFusion 안 씀. 관련 이슈도 깃허브에 있음
1년 넘게 쓰고 있는데 환상적임
therno.com에서 수십억 개 날씨 점수를 미리 계산하는데 Polars 2.0 rc가 목숨줄이었음. 오늘 밤에 정식으로 올림
블로그의 DataFusion 결과는 좀 의외임. 우리 워크로드에서는 DataFusion이 계속 앞서거나 비슷했고 DuckDB가 훨씬 느렸음
out of core 좋음. 예전에 pandas/polars에서 다른 걸로 갈아탄 이유가 그거였음
Pandas는 짜증나도 SciPy 같은 라이브러리가 NumPy 배열이나 데이터프레임을 기대함. 실험실 사람 입장에서 이게 진짜 문제인가?
.to_numpy()로 바꾸면 됨. narwhals 쓰면 pandas, polars, modin 사이를 갈아탈 수 있고 의존성도 훨씬 가벼움
TPC 벤치마킹 해본 사람으로서, 이런 글은 'A가 B보다 몇 % 빠르다'로 읽으면 안 됨. '우리가 성능에 집중했고 특정 워크로드가 나아질 것' 정도로 보는 게 맞음