У меня есть файл CSV 24 ГБ (~ 26 столбцов), который я хочу преобразовать в формат Parquet. Из онлайн-исследований я узнал, что для лучшей производительности рекомендуемый размер файла Parquet составляет от 128 МБ до 1 ГБ при запросах с Amazon Athena.
Следующий код эффективно преобразует CSV в несколько сотен 6-13 МБ Параллельные файлы паркета:
import dask.dataframe as dd
dd.read_csv('input_24GB.csv', dtype=object).to_parquet('output_folder')
Чтобы контролировать размер вывода, я использовал параметр blocksize
в dd.read_csv()
:
dd.read_csv('input_24GB.csv', dtype=object, blocksize=1e9).to_parquet('output_folder')
К сожалению, нет точного способа предсказать, какой будет выходной размер файла Parquet для указанного c размера блока. Затем я попытался проверить, смогу ли я объединить все несколько сотен файлов Parquet 6-13 МБ в большие файлы Parquet, чтобы они имели размер не менее 128 МБ. Единственное решение, которое я придумал, работает серийно.
Есть ли лучший и более быстрый способ выполнить всю эту задачу с ограниченными ресурсами вычислений / памяти на ноутбуке?