将大型 dask 数据帧写入单个 S3 CSV 文件
Write large dask dataframe into a single S3 CSV file
我正在使用 dask.distributed 集群,我想将一个大数据帧保存到单个 CSV 文件到 S3,尽可能保持分区顺序(默认情况下 to_csv () 将数据帧写入多个文件,每个分区一个)。而且,这个文件存储操作也应该作为一个lazy/delayed任务来执行(应该在cluster worker上执行)。
我能想到的第一个解决方案是将分区存储在临时 S3 位置,然后在延迟功能中使用 S3 分段上传 merge/upload 这些文件。临时存储在这里是一个缺点。
可以使用 dataframe.to_delayed() 来完成吗?上传需要通过一个单独的延迟函数来完成(S3没有append操作),同时dataframe可能比worker的内存大,所以函数不能简单地依赖所有dataframe分区。
PS。 CSV 格式是此用例的要求。
我正在使用 dask.distributed 集群,我想将一个大数据帧保存到单个 CSV 文件到 S3,尽可能保持分区顺序(默认情况下 to_csv () 将数据帧写入多个文件,每个分区一个)。而且,这个文件存储操作也应该作为一个lazy/delayed任务来执行(应该在cluster worker上执行)。
我能想到的第一个解决方案是将分区存储在临时 S3 位置,然后在延迟功能中使用 S3 分段上传 merge/upload 这些文件。临时存储在这里是一个缺点。
可以使用 dataframe.to_delayed() 来完成吗?上传需要通过一个单独的延迟函数来完成(S3没有append操作),同时dataframe可能比worker的内存大,所以函数不能简单地依赖所有dataframe分区。
PS。 CSV 格式是此用例的要求。