如何从SageMaker笔记本上传Dataframe到AWS S3存储桶

0

【以下的问题经过翻译处理】 在成功将S3的CSV文件上传到SageMaker笔记本实例后,我卡在了反向操作上。

我有一个Dataframe,并希望将其作为CSV或JSON上传到S3 Bucket。我的代码如下:

bucket='bucketname'

data_key = 'test.csv'

data_location = 's3://{}/{}'.format(bucket, data_key)

df.to_csv(data_location)

我认为既然我在加载时成功使用了pd.read_csv(),那么使用df.to_csv()也应该能够工作,但它并没有。可能是因为这种方式无法在手动上传文件到S3时选择隐私选项,所以它生成了错误。是否有一种方法可以从SageMaker上传数据到S3?

profile picture
专家
已提问 5 个月前47 查看次数
1 回答
0

【以下的回答经过翻译处理】 解决这个问题的一种方法是将CSV保存到SageMaker笔记本实例上的本地存储中,然后使用boto3通过S3 API上传文件作为S3对象。上传文件到S3的文档请参考此处

请注意,您需要确保您的SageMaker托管笔记本实例在其IAM角色中具有适当的ReadWrite权限,否则您将收到权限错误。

将文件本地保存到您希望的任何目录中

文件名=“ mydata.csv” df.to_csv(file_name)

实例化S3客户端并上传到s3

import boto3 s3 = boto3.resource('s3') s3.meta.client.upload_file(file_name,'YOUR_S3_BUCKET_NAME','DESIRED_S3_OBJECT_NAME')

或者使用upload_fileobj(),它可能有助于并行化为分片上传。

profile picture
专家
已回答 5 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则