Polars 2.0 вышел с потоковой обработкой запросов по умолчанию

Изображение: OpenAI
В версии 2.0 библиотеки Polars для обработки табличных данных потоковый движок и выгрузка на диск при нехватке памяти включены по умолчанию, сообщили разработчики.
При переходе на новую версию нужно учитывать изменение порядка строк. Вызов collect() для LazyFrame теперь использует потоковый движок, который по умолчанию не гарантирует порядок строк в некоторых операциях, включая объединение таблиц и группировку. Если порядок важен, его сохранение нужно явно включить параметром maintain_order=True. Команда опубликовала руководство по переходу на версию 2.0.
Выгрузка данных на диск начинается, когда занято примерно 80% оперативной памяти. Это позволяет завершить запрос, даже если памяти не хватает. По умолчанию для выгрузки можно использовать до 64 ГБ на диске. Механизм поддерживает, в частности, сортировку и оконные функции, а для объединения таблиц и группировки его добавят позже.
Команда также расширила поддержку SQL и улучшила оптимизатор запросов. В собственных тестах на двух серверах с данными на основе TPC-H и TPC-DS разработчики сравнили Polars с DuckDB и DataFusion. По их результатам, Polars с настройками по умолчанию оказался быстрее во всех тестах, кроме одного.
Запросы, на которых DataFusion не уложился в отведённое время или исчерпал память, исключили из результатов для всех движков. Эти испытания не соответствуют требованиям TPC, поэтому их результаты нельзя сравнивать с опубликованными результатами официальных тестов.



