如何在aws s3中使用延迟dask将dask数据帧写入单个csv,以便更快?

如何在aws s3中使用延迟dask将dask数据帧写入单个csv,以便更快?,dask,dask-distributed,dask-delayed,Dask,Dask Distributed,Dask Delayed,目前我正在使用下面的代码,但它需要太多的时间。因为我正在将dask数据帧转换为缓冲区,并使用多部分上传将其上传到s3中 def multi_part_upload_with_s3(file_buffer_obj,BUCKET_NAME,key_path): client = boto3.client('s3') s3 = boto3.resource('s3') config = TransferConfig(multipart_threshold=1024 *25,m

目前我正在使用下面的代码,但它需要太多的时间。因为我正在将dask数据帧转换为缓冲区,并使用多部分上传将其上传到s3中

def multi_part_upload_with_s3(file_buffer_obj,BUCKET_NAME,key_path):
    client = boto3.client('s3')
    s3 = boto3.resource('s3') 
    config = TransferConfig(multipart_threshold=1024 *25,max_concurrency=10,multipart_chunksize=1024 * 25,use_threads=True)
    s3.meta.client.upload_fileobj(file_buffer_obj, BUCKET_NAME, key_path,Config=config)

ddf.compute().to_csv(target_buffer_old,sep=",")
target_buffer_old=io.BytesIO(target_buffer_old.getvalue().encode())

multi_part_upload_with_s3(target_buffer_old,"bucket","key/file.csv")

我建议您使用dask(这是默认的工作方式)并行写入单独的S3文件,然后使用多部分上传将输出合并在一起。您可以使用
s3fs
方法
merge
来执行此操作。请注意,您将希望不使用头进行写入。

我建议您使用dask(这是默认的工作方式)并行写入单独的S3文件,然后使用多部分上载将输出合并在一起。您可以使用
s3fs
方法
merge
来执行此操作。请注意,您将希望不使用标题进行写入