如何从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
專家
已提問 8 個月前檢視次數 74 次
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
專家
已回答 8 個月前

您尚未登入。 登入 去張貼答案。

一個好的回答可以清楚地回答問題並提供建設性的意見回饋,同時有助於提問者的專業成長。

回答問題指南