将大型DASK数据帧写入单个S3 CSV文件



我正在使用dask.dask.distribed cluster,我想将大型数据框架保存到单个CSV文件到S3,如果可能()将dataframe写入多个文件,一个每个分区)。此外,此文件存储操作也应作为懒惰/延迟任务执行(应在群集工作人员上执行)。

我能想到的第一个解决方案是将分区存储在临时S3位置,然后在延迟功能中使用S3 Multipart上传将这些文件合并/上传这些文件。临时存储在这里是不利的。

可以使用dataframe.to_delayed()完成吗?需要通过单个延迟功能(S3具有附加操作)执行上传,同时dataFrame可能大于Worker的内存,因此该函数不能简单地依赖于所有数据框架分区。

ps。CSV格式是此用例的要求。

您当然可以使用df.map_partitions写入几个文件,然后s3fsmerge方法可以创建一个最终文件(请记住,除了第一件外,所有内容都不应编写一个标题行)。

您也可以使用to_delayed来做类似的事情。您需要创建多个部分上传,将其与每个延迟对象一起传递给上载程序,然后以延迟的最终确定步骤收集零件 - 链接是在S3F中进行类似的操作的代码。

最新更新