Python 由于/tmp中的临时.partd文件,合并dask数据帧会导致磁盘错误

Python 由于/tmp中的临时.partd文件,合并dask数据帧会导致磁盘错误,python,merge,dask,temporary-files,Python,Merge,Dask,Temporary Files,我一直在尝试将32个文件与dask中的公共id列合并。这些文件总共有82.4GB大。我反复浏览这些文件,对一些文件进行外部合并,然后对其他文件进行左合并。我没有设置分布式客户端,因为我不确定是否需要它。我还尝试将id列设置为索引,并使用它进行合并,但不起作用。我也尝试了pandas,但出现了一个内存错误,尽管我认为它可以放入RAM(524GB) 问题是dask创建了太多大的临时.partd文件,它占用了950GB的可用空间。看起来它并没有充分利用内存。我怀疑工作流会创建许多临时文件,即使这些文件

我一直在尝试将32个文件与dask中的公共id列合并。这些文件总共有82.4GB大。我反复浏览这些文件,对一些文件进行外部合并,然后对其他文件进行左合并。我没有设置分布式客户端,因为我不确定是否需要它。我还尝试将id列设置为索引,并使用它进行合并,但不起作用。我也尝试了pandas,但出现了一个内存错误,尽管我认为它可以放入RAM(524GB)

问题是dask创建了太多大的临时.partd文件,它占用了950GB的可用空间。看起来它并没有充分利用内存。我怀疑工作流会创建许多临时文件,即使这些文件未使用,也不会在过程中被清除。一旦脚本因磁盘空间原因出现错误而失败,它们将被清除

任何建议都会有帮助!多谢各位

代码如下所示:

#/usr/bin/env python
作为pd进口熊猫
将dask.dataframe作为dd导入
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
list_df=pd.read_csv(“path_2_files.csv”)
对于索引,列表_df.iterrows()中的行:
打印(“起始”+str(索引))
如果(索引==0):
ddf=dd.read_csv(行['path']+行['filename'],sep=“\t”\
数据类型={'id':'object'\
'data1':'float64'\
'data2':'float64'\
'data3':'float64'\
})
#检查是否有重复项并删除
ddf=ddf.drop_duplicates()
打印(len(ddf))
其他:
ddf2=dd.read_csv(行['path']+行['filename']\
数据类型={'id':'object'\
'data1':'float64'\
'data2':'float64'\
'data3':'float64'\
})
#检查是否有重复项并删除
ddf2=ddf2.删除重复项()
如果(行['type']='test1'):
ddf=dd.merge(ddf,ddf2,on='id',how=“outer”)
打印(len(ddf))
德尔ddf2
elif(行['type']=='test2'或行['type']=='test3'):
ddf=dd.merge(ddf,ddf2,on='id',how=“left”)
打印(len(ddf))
德尔ddf2
to_parquet(“s3://some/path/merged_file.parquet”,object_encoding='utf8')

如果您的任何其他分区的磁盘空间大于
/tmp
,则可以按中所述更改这些临时文件的目录。如果您的任何其他分区的磁盘空间大于
/tmp
,则可以按中所述更改这些临时文件的目录