Обновление Polars lazyframe() автоматически завершается сбоем в бессерверной облачной функции (ошибка OOM)Python

Программы на Python
Ответить
Anonymous
 Обновление Polars lazyframe() автоматически завершается сбоем в бессерверной облачной функции (ошибка OOM)

Сообщение Anonymous »

Я пытаюсь применить изменения из одного фрейма данных (исходный файл — 7 МБ .CSV) к более крупному фрейму данных (исходный файл — около 3 ГБ .CSV), например. обновить существующие строки с соответствующими идентификаторами и в то же время добавить новые строки без ранее существовавшего идентификатора в более крупный фрейм данных. Я считаю, что правильный способ сделать это — использовать метод Polars update() со стратегией «как», установленной на «full».
К сожалению, это отлично работает при тестировании на моем локальном компьютере, но молчаливо завершается сбоем в среде Cloud Function даже с контейнером, настроенным на 8 ГБ ОЗУ.
Я использую scan_csv() с infer_schema=False, чтобы получить LazyFrames (только со строками) из двух наборы данных перед вызовом update(), и попробовал записать промежуточные результаты с помощью метода define(), который прекрасно записывает статистику фрейма данных для каждого из исходных наборов данных, но никогда не может пройти мимо update(), чтобы записать полученный фрейм данных, write():

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

import polars as pl

large_df = pl.scan_csv(large_file_path, infer_schema=False)
small_df = pl.scan_csv(small_file_path, infer_schema=False)

logging.info(f'LARGE: {large_df.describe()}') # Logs are visible for this
logging.info(f'SMALL: {small_df.describe()}') # Logs are visible for this
merged_df = large_df.update(small_df, how='full', on='id') # results in OOM in the Cloud Function log
logger.info(f'MERGED: {merged_df.describe()}') # Never reaches this line
Делаю ли я здесь что-то неправильное или неэффективное?

Подробнее здесь: https://stackoverflow.com/questions/798 ... tion-oom-e
Ответить

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

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

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

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

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