У меня есть большой фрейм данных parquet dask (40 ГБ) с 600 разделами, и мне нужно drop_duplicates с dask.
Я заметил, что простой drop_duplicates всегда приводит к 1 разделу, поэтому я включил "split_out".
Паркетный файл с разделами был создан из csvs, каждый из которых уже был выведен.
Когда я его запускаю, я всегда получаю рабочие ошибки памяти, превышающие 95% памяти.
При наблюдении за приборной панелью я также заметил, что рабочие заполняют свое ОЗУ только примерно до 70% максимум, поэтому я не понимаю, почему у меня проблемы с памятью.
dataframe.map_partitions(lambda d: d.drop_duplicates('index'))
.... не будет работать, так как он выполняет дедупликацию только в каждом разделе, но не по горизонтали.
Любая идея, как я могу рассчитать оптимальный размер раздела, чтобы drop_duplicates работал на моих 2 рабочих с 25 ГБ оперативной памяти каждый?
client = Client(n_workers=2, threads_per_worker=2, memory_limit='25000M',diagnostics_port=5001)
b=dd.read_parquet('output/geodata_bodenRaw.parq')
npart = int(b.npartitions)
print('npartitions are: ',npart)
b=b.drop_duplicates(subset='index',split_out=npart)
b=b.map_partitions(lambda d: d.set_index('index'))
b.to_parquet('output/geodata_boden.parq', write_index=True )
map_partition
предназначен для независимой работы в каждом разделе, поэтому ваше поведение является нормальным. - person rpanai   schedule 16.05.2019