Загрузите несколько больших файлов CSV в паркет при создании нового столбца для имени файла.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Загрузите несколько больших файлов CSV в паркет при создании нового столбца для имени файла.

Сообщение Anonymous »

У меня есть коллекции CSV-файлов, до 1000, каждый из которых имеет несжатый размер ~1 ГБ. Я хочу создать из них единый набор данных паркета.
При этом я хочу записать, из какого файла взят каждый набор строк.
Я хочу сделать все это менее чем с 10 ГБ оперативной памяти на Python.
Очевидно, что начать нужно с Dask.
Если я сделайте что-нибудь вроде:

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

for infile in file_list:
ddf = dd.read_csv(infile)
ddf = ddf.assign(filename=infile)
ddf.to_parquet("output_parquet_path",
append=True,
write_index=False,
write_metadata_file=True,
compute=True)
Затем я получаю сообщение об ошибке о типах столбцов, начиная со второго файла - кажется, что текстовые столбцы имеют тип string[pyarrow] в файле паркета, но объект в кадре данных Dask (см. ValueError: добавленные типы данных различаются при добавлении двух простых таблиц с помощью dask).
Если я попытаюсь полагаться на ленивый характер Dask и сделать :

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

frame_list = list()
for infile in file_list:
ddf = dd.read_csv(infile)
ddf = ddf.assign(filename=infile)
frame_list.append(ddf)

full_frame = ddf.concat(frame_list)
full_frame.to_parquet("output_parquet_path",
write_index=False,
write_metadata_file=True,
compute=True)
Затем вычисление запускается раньше и пытается загрузить все кадры в память одновременно.

Подробнее здесь: https://stackoverflow.com/questions/787 ... r-file-nam
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

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

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