Polars 2.0 출시

7 hours ago 3

LazyFrame.collect()의 기본 실행 엔진이 스트리밍 엔진으로 바뀌어 대부분 쿼리의 메모리 사용량과 성능이 개선됨. 일부 연산에서 행 순서를 보장하려면 maintain_order=True를 지정해야 함 메모리가 부족할 때 데이터를 디스크로 내보내는 아웃오브코어(out-of-core) 기능이 기본 활성화됨. 현재 정렬, 윈도 함수, 다수의 표현식을 지원하며 join과 group_by 지원은 향후 계획에 있음 SQL을 일급 기능으로 지원하고 최적화기와 실행 엔진을 개선함. TPC-H/TPC-DS 파생 벤치마크에서 경쟁력 있는 성능을 보였지만, 많은 스레드로 작은 데이터를 처리할 때는 오버헤드가 남아 있음 Arrow MapType을 직접 지원하는 Map 데이터 타입이 추가돼 키 조회, 키 존재 여부 확인, 키와 값 추출 등 딕셔너리 형태의 연산을 제공함 타입과 데이터 불일치 처리를 더 엄격하게 만들어 오류를 조기에 발견하도록 함. collect_schema()로 데이터를 실제 처리하지 않고 스키마를 검증해 사람과 AI 에이전트의 반복 작업을 빠르게 할 수 있음 스트리밍 엔진과 아웃오브코어의 기본 활성화 LazyFrame에서 collect()를 호출하면 이제 스트리밍 엔진을 기본 사용하며, 대부분 쿼리에서 메모리 사용량과 성능이 크게 개선됨 join, group_by, unpivot 등 일부 연산은 기본적으로 행 순서를 보장하지 않음 이 동작 변경이 메이저 버전 업데이트가 필요했던 이유임 결과의 행 순서가 필요하면 maintain_order=True로 명시해야 함 아웃오브코어는 RAM 사용량이 약 80%에 도달하면 데이터를 디스크로 내보내기 시작하며, 이 임계값은 추가 조정이 필요할 수 있음 기본 디스크 사용 한도는 64GB임 현재 정렬, 윈도 함수, 다수의 표현식이 디스크를 활용해 쿼리를 완료할 수 있음 join과 group_by의 아웃오브코어 지원은 아직 없으며 향후 추가할 계획임 두 기본값 변경으로 메모리 사용량이 큰 작업을 더 안정적으로 처리할 수 있고, 향후 지원 연산 확대로 이 안정성을 더 높일 계획임 SQL 지원과 실행 엔진 최적화 Polars 2.0부터 SQL을 일급 기능으로 취급하며, 최근 몇 달간 SQL 지원 범위를 크게 확장함 SQL을 포함한 더 많은 워크로드에서 엔진을 활용하도록 최적화기와 실행 엔진을 개선함 조인 순서 재배치, 공통 하위 실행 계획 제거 개선, 동적 조건식과 Bloom...

Read Entire Article