Недостаток памяти Polars при выполнении серии соединений с совпадением 1:1 и большим количеством столбцов.Python

Программы на Python
Ответить
Anonymous
 Недостаток памяти Polars при выполнении серии соединений с совпадением 1:1 и большим количеством столбцов.

Сообщение Anonymous »

Я выполняю серию левых соединений на Polars LazyFrames:

Код: Выделить всё

final_df = (
lf1.join(lf2, on="id", how="left")
.join(lf3, on="id", how="left")
.join(lf4, on="id", how="left")
)
Объединения почти 1 к 1. Каждый набор данных довольно большой: около 50 миллионов строк и примерно 20 столбцов.

И для информации есть столбец, который я удалил, который может ограничить соединение (если идентификатор совпадает, то «зона» с низкой мощностью столбца равна)
Даже при использовании потокового режима хеш-таблицы, созданные во время соединений, потребляют много памяти. Я пробовал разные вещи (выравнивание/объединение, объединение + группировка, сортировка перед объединением, разделение по зоне, объединение по идентификатору и зоне, объединение столбцов - это структура...). Тем не менее, я не нашел хорошего способа выполнять эти соединения более эффективно с точки зрения использования памяти без значительного снижения производительности (например, записывая промежуточные результаты в Parquet после каждого соединения).
Есть ли у кого-нибудь предложения или рекомендации по выполнению больших левых соединений более эффективным с точки зрения использования памяти способом?

Подробнее здесь: https://stackoverflow.com/questions/798 ... and-high-n
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»