Dask работает медленно при группировании по нескольким столбцам и затем агрегировании - PullRequest
0 голосов
/ 04 марта 2019

У меня есть фрейм данных со столбцами a, b, c и d.Все типы данных - целые числа.

У меня есть dask-кластер с 10 рабочими, 20 ядрами и 20 ГБ оперативной памяти.

Я хотел бы сгруппировать кадры данных по a и b и суммировать их d внутри групп.

f = 's3://some_s3_bucket/some_file.csv_*.csv.gz'

cols = [
    'a',
    'b',
    'c',
    'd' ]

df = dd.read_csv(f, encoding='latin-1',  compression='gzip', header=None, names =cols, blocksize=None) 

df_pers = client.persist(df)

Затем я делаю

df_agg_graph = df_pers.groupby(['a', 'b'])['c'].sum()
df_agg = df_agg_graph.compute()

, и результат занимает вечность

Когда я иду

f_agg_graph = df_pers.groupby(['a'])['c'].sum()

т.е. я фокусируюсь на a только все работает быстро и как ожидалось.

У вас есть идея, что может бытьпроблема здесь?

Мне кажется, я хочу распределить данные по a, а затем сгруппировать по a и b, это правильно?Тем не менее, даже если я сделаю df = df.set_index('a') до того, как упорствую выше, ситуация не улучшится.

Большое спасибо c

...