Dask - преобразовать столбец отметки времени в дату и установить как индекс, убив процесс

Я новичок в Даске,

У меня 152 паркетных файла в среднем 200 МБ (32 ГБ ОЗУ станка).

В каждом файле есть столбец Timestamp, и я хочу сделать этот столбец разделом (индексом).

Если я установил столбец Timestamp как индекс, будет слишком много разделов, поэтому мне нужно преобразовать его в Date - ›

ddf = dd.read_parquet('gs://bucket_name/*.parquet')
ddf['partition'] = dd.to_datetime(ddf['event_time'], format='%Y/%m/%d')

Я успешно выполнил другие операции, такие как groupby и т. Д.

Как лучше всего справиться с этой ситуацией, если мне нужен паркетный файл с разделами для быстрого запроса по разделам?


person MPA    schedule 28.04.2021    source источник


Ответы (1)


Этот ответ будет полезным. В частности, вы хотите установить столбец с меткой времени как индекс с определенной периодичностью.

# note that specifying npartitions is optional, but
# can be useful if for some reason there are too
# many partitions
ddf = ddf.set_index('partition', npartitions=10)

# you can also repartition it to get the desired frequency
# (e.g. daily)
ddf = ddf.repartition(freq='1D')

Обратите внимание, что вы можете сделать этот процесс намного более эффективным, если ваши данные уже отсортированы по дате и времени, подробности см. В ответе, указанном выше.

person SultanOrazbayev    schedule 28.04.2021
comment
проблема в том, что ядро ​​умерло до того, как я смогу переразбить - person MPA; 28.04.2021