К сожалению, это отлично работает при тестировании на моем локальном компьютере, но молчаливо завершается сбоем в среде 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
Мобильная версия