Запись DataFrames как разделенного объекта паркета в Polars с помощью PyArrowPython

Программы на Python
Ответить Пред. темаСлед. тема
Гость
 Запись DataFrames как разделенного объекта паркета в Polars с помощью PyArrow

Сообщение Гость »


У меня есть 12 файлов паркета в каталоге с соответствующими столбцами, которые я пытаюсь записать в секционированный объект с помощью Polars и PyArrow. Я перебираю каждый файл в каталоге и читаю его как LazyFrame. Затем я перебираю список DataFrames и записываю их в секционированный объект. Предполагаемый размер каждого DataFrame составляет ~ 1 ГБ, а все объединенные DataFrame ~ 10 ГБ. Процесс использует около 15 ГБ ОЗУ и занимает менее часа.

Я пытался сделать это с помощью следующего кода:

all_lazyframes: list[pl.LazyFrame] = [] для файла в glob.glob(input_path): lazyframe: pl.LazyFrame = pl.scan_parquet(файл) all_lazyframes.append(ленивый кадр) кадры данных: список[pl.DataFrame] = pl.collect_all(all_lazyframes) для вывода в кадрах данных: вывод.write_parquet( выходной_путь, use_pyarrow = Правда, pyarrow_options={"partition_cols": ["part"]}, ) Полученный секционированный объект имеет следующую структуру:

partitioned_object/ часть = а/ data0.parquet data1.parquet ... часть=b/ data0.parquet data1.parquet ... Размер этого объекта составляет ~250 ГБ. Мой вопрос: почему разделенный объект такой большой, если общий размер входных данных составляет всего ~ 10 ГБ? Есть ли более эффективный способ добиться этого?
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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