• 1000 1003 *
Сейчас у меня есть паркетные файлы, которые мне нужно проиндексировать по одному столбцу.
Код прост:
df = dd.read_parquet(input_path)
df = df.set_index(index_column)
df.to_parquet(output_path)
Я выполнил повторное разбиение входных файлов, чтобы разобраться 300 разделов по 1 ГБ (паркетная синхронизация, поэтому раздел ~ 70-80 МБ).
Я использую кластер Dask Kubernetes (рабочие: 2 ЦП, память: 16 или 32 ГБ), и я думал о такой операции будет работать даже с небольшим количеством рабочих (больше рабочих только для ускорения процесса).
Я вижу, что память стремится к верхнему пределу и рабочие погибают. Должен ли кластер иметь возможность загружать весь фрейм данных в память через рабочих?
Что делать, чтобы иметь возможность делать это даже с очень большими фреймами данных? Как отлаживать при необходимости? (локальное хранилище на одного работника, ...)