Объединить несколько больших фреймов данных в DASK - PullRequest
0 голосов
/ 22 октября 2018

У меня есть несколько (~ 50) больших (~ 1 до 5 ГБ каждый) CSV-файлов, которые я хотел бы объединить в один большой CSV-файл.Используя dask, я создал цикл, который открывает каждый CSV и вызывает слияние перед сохранением всего в CSV в конце цикла:

for i, file in enumerate(files):

    table = dd.read_csv(file)
    if i == 0:
        merged = table
    else:
        merged = dd.merge(merged, table, on = ["id", "time", "key"])

merged.to_csv("merged\merged1810_*.csv")

Однако, в результате получается MemoryError.

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

1 Ответ

0 голосов
/ 22 октября 2018

Требуется ли полное слияние / объединение, или простое concat?

df = dd.read_csv(files)

Выполнение полного слияния / объединения может быть довольно дорогостоящим делом параллельно, особенно в ситуации с нехваткой памяти.Очень редко можно увидеть, как кто-то хочет итеративно объединить / объединить множество фреймов данных.Я подозреваю, что либо dd.read_csv, либо dd.concat, вероятно, являются лучшими решениями для вас.(хотя я не знаю вашу заявку)

...