Как обрабатывать Python Polars LazyFrame в пакетном режимеPython

Программы на Python
Anonymous
Как обрабатывать Python Polars LazyFrame в пакетном режиме

Сообщение Anonymous »

Я хотел бы отложенно загрузить большой файл паркета. Затем мне нужно обработать его пакетно, потому что я пишу в базу данных, и существует ограничение на количество строк, которые можно записать в базу данных одновременно. В LazyFrame нет метода write_database, поэтому я собираю пакеты в фрейм данных, чтобы использовать DataFrame.write_database.
Проблема в том, что сбор фрейма данных занимает больше времени, пока я работаю над ним. пакеты, но только для определенных наборов данных. Если оба столбца в кадре являются строками, сбор происходит достаточно быстро: первый сбор занимает ~0,02 секунды, а последующие сборы занимают около 1,5 секунды. Но если один столбец — i64, первый сбор выполняется примерно за 0,02 секунды, но последующие операции сбора занимают более 10 секунд, и использование оперативной памяти компьютера увеличивается. Предполагаемый размер различных пакетов данных примерно одинаков для всех наборов данных: 7–8 МБ.
Вот упрощенный код:

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

lf = pl.scan_parquet(file)

n_batch = 100_000
row = 0

while row < 500_000:
lf_batch = lf.slice(row, n_batch)
df_batch = lf_batch.collect()
row += n_batch
Есть ли лучший способ сбора пакетов?

Подробнее здесь: https://stackoverflow.com/questions/785 ... in-batches

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