У меня есть dataframe, состоящий из 100 000+ строк, и каждая строка содержит 100 000 столбцов, всего до 10 000 000 000 значений float.
Мне удалось прочитать их ранее в файле csv
(разделенный вкладками), и я успешно прочитал их на 50-ядерном компьютере Xeon с объемом памяти 250 ГБ и попытаюсь записать его как каталог .parq
, как например:
Поплавки в huge.csv
были сохранены как строки, а это 125 ГБ.
import dask.dataframe as dd
filename = 'huge.csv'
df = dd.read_csv(filename, delimiter='\t', sample=500000000)
df.to_parquet('huge.parq')
Он записывается в huge.parq
в течение недели, а каталог составляет 14 ГБ, и похоже, что процесс сохранения .to_parquet
не скоро остановится.
И free -mh
показывает, что все еще сохраняется память, но время, которое требуется для сохранения каталога .parq
, чрезвычайно медленное:
$ free -mh
total used free shared buff/cache available
Mem: 251G 98G 52G 10M 101G 152G
Swap: 238G 0B 238G
Вопросы:
-
Учитывая размер блока данных и машины, возможно ли вообще сохранить файл данных dask в паркетном файле?
-
Нормально ли для
dask
иfastparquet
делать так долго, чтобы сэкономить огромные кадры данных? -
Есть ли способ оценить время, которое потребуется для сохранения файла паркета?