使用字符串 IO 将 dask 数据帧写入 S3

我有一个 dask 数据帧dask_df,我想将其直接存储到 S3,而不转换为 pandas ( dask_df.compute()),因为它太大了。问题是当我尝试执行以下操作时,字符串 IO 抛出错误:


import boto3

from boto3 import session, client

import dask.dataframe as dd

import datetime


today = date.today()    


client = boto3.client('s3')

bucket = 'test-bucket'

prefix = 'foldername/'

csv_buffer = StringIO()

dask_df.to_csv(csv_buffer)

filename = 'filename_{}.csv'.format(today)


response = client.put_object(

    ACL = 'private',

    Body = csv_buffer.getvalue(),

    Bucket = bucket,

    Key = prefix+filename

    )

这是我收到的错误 -

raise TypeError( “url 类型无法理解:%s” % urlpath)


类型错误:无法理解 url 类型:<_io.StringIO 对象位于 0x7f830e6b5550>


慕雪6442864
浏览 74回答 1
1回答

精慕HU

文档字符串并没有说你可以写入 StringIO;确实,你难道不希望这能填满你的记忆吗?幸运的是,Dask 已经为你完成了这项工作,你可以做dask_df.to_csv("s3://test-bucket/foldername/filename_*.csv")就是这样。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python