Polars 2.0 프리릴리스

1 hour ago 1

첫 릴리스 후보 Polars 2.0rc1은 대규모 기능 추가보다 기존 설계 제약을 없애고 기본 동작과 API를 개선하는 데 초점을 맞춤 모든 LazyFrame 쿼리가 기본적으로 스트리밍 엔진을 사용하면서 메모리 효율과 실행 성능이 개선되며, 전체적으로 약 5배 빨라질 것으로 예상함 스트리밍 엔진의 join, group_by, unpivot 등은 행 순서를 보장하지 않아, 순서가 필요하면 maintain_order=True를 지정하거나 기존 인메모리 엔진을 명시해야 함 손실 가능성이 있는 is_in 타입 변환, 길이가 다른 수평 결합, 모호한 형 변환에 엄격한 검증을 적용해 데이터 불일치를 조기에 차단함 제거된 API에는 대체 방법을 알려주는 전용 예외를 제공하며, 향후 2.x에는 외부 메모리 처리, 새 IO 플러그인, S3 리더, 비용 기반 플래너, 조인 재정렬, 완전 비동기 파이프라인 등이 예정돼 있음 기본 엔진이 된 스트리밍 실행 Polars 2.0부터 LazyFrame.collect()의 engine="auto"가 기본적으로 스트리밍 엔진을 선택함 대부분의 쿼리에서 메모리 사용량과 실행 성능이 크게 개선됨 전체적으로 스트리밍 엔진이 약 5배 빨라질 것으로 예상함 스트리밍 실행은 join, group_by, unpivot 같은 일부 연산에서 기본적으로 행 순서를 보장하지 않음 관찰 가능한 순서가 필요하면 maintain_order=True 또는 연산별 순서 옵션을 지정해야 함 조인에서 왼쪽 입력 순서를 유지하려면 maintain_order="left"를 사용할 수 있음 기존 인메모리 엔진도 계속 선택할 수 있음 프로세스 전체 설정: pl.Config.set_engine_affinity("in-memory") 개별 쿼리 설정: .collect(engine="in-memory") 데이터 불일치를 조기에 차단하는 엄격성 Polars는 긴 파이프라인을 실행한 뒤가 아니라 가능한 한 앞에서 오류를 내는 조기 실패(fail-fast) 방식을 강화함 데이터 불일치를 암묵적으로 처리하면 버그를 숨길 수 있어, 해당 동작을 기본값이 아닌 명시적 선택으로 전환함 collect_schema()는 데이터를 구체화하지 않고 타입을 해석해 스키마 수준의 불일치를 찾음 AI 에이전트도 쿼리 구조를 일찍 검증하고 빠르게 수정할 수 있음 쿼리 계획 컴파일 단계에서 찾을 수 없는 데이터 의존적 오류도 가능한 한 엄격하게 처리함 손실 있는 ...

Read Entire Article