Я пытаюсь преобразовать несколько больших файлов .csv в формат паркета с помощью python и dask.
Это код, который я использую:
trans = dd.read_csv(os.path.join(TRANS_PATH, "*.TXT"),
sep = ";", dtype=col_types, parse_dates=['salesdate'])
trans = trans.drop('salestime', axis=1)
trans['month_year'] = trans['salesdate'].dt.strftime('M_%Y_%m')
trans['chainid'] = '41'
trans['key'] = trans['chainid'] + trans['barcode']
trans = trans.join(attribs[['catcode']], on=['key'])
start = default_timer()
trans.to_parquet(PARQUET_PATH, engine = "fastparquet", compression='snappy',
partition_on=['catcode', 'month_year'], append=False)
end = default_timer()
print("Done in {} secs.".format(end - start) )
Кажется, что код работает нормально, и все файлы паркета создаются в правильных каталогах без предупреждений почти до конца. Выполнение графика доходит до этого момента:
На этом этапе программа зависает на минуту или около того, а затем появляются следующие предупреждения:
distributed.nanny - WARNING - Worker exceeded 95% memory budget. Restarting
distributed.nanny - WARNING - Worker process 16996 was killed by signal 15
distributed.nanny - WARNING - Restarting worker
После предупреждения несколько сотен процессов перезапускаются и выполняются снова:
Это происходит трижды, и в итоге программа вылетает:
---------------------------------------------------------------------------
KilledWorker Traceback (most recent call last)
<ipython-input-8-f644e4fa53ea> in <module>()
27 start = default_timer()
28 trans.to_parquet(PARQUET_PATH, engine = "fastparquet", compression='snappy',
---> 29 partition_on=['catcode', 'month_year'], append=False)
Кто-нибудь знает, почему это происходит?
Та же проблема, есть помощь?