python 将S3数据载入AWS SageMaker笔记本

sd2nnvve  于 2022-12-02  发布在  Python
关注(0)|答案(9)|浏览(148)

我刚刚开始试用AWS SageMaker,希望将数据从S3 bucket加载到我的SageMaker python jupyter笔记本中的panda Dataframe 中进行分析。
我可以使用boto从S3获取数据,但我想知道是否有一个更优雅的方法作为SageMaker框架的一部分,在我的python代码中完成此操作?
提前感谢您的任何建议。

ymzxtsji

ymzxtsji1#

import boto3
import pandas as pd
from sagemaker import get_execution_role

role = get_execution_role()
bucket='my-bucket'
data_key = 'train.csv'
data_location = 's3://{}/{}'.format(bucket, data_key)

pd.read_csv(data_location)
txu3uszq

txu3uszq2#

在最简单的情况下,您不需要boto3,因为您只需读取资源。
那就更简单了:

import pandas as pd

bucket='my-bucket'
data_key = 'train.csv'
data_location = 's3://{}/{}'.format(bucket, data_key)

pd.read_csv(data_location)

但是正如Prateek所说,请确保将您的SageMaker笔记本示例配置为具有对s3的访问权限。

4ioopgfo

4ioopgfo3#

如果你看一下here,你似乎可以在 InputDataConfig 中指定它。在文档中搜索“S3 DataSource”(ref)。第一个匹配甚至是在Python中,在第25/26页。

uwopmtnx

uwopmtnx4#

您还可以使用s3fs将存储桶作为文件系统进行访问

import s3fs
fs = s3fs.S3FileSystem()

# To List 5 files in your accessible bucket
fs.ls('s3://bucket-name/data/')[:5]

# open it directly
with fs.open(f's3://bucket-name/data/image.png') as f:
    display(Image.open(f))
bz4sfanl

bz4sfanl5#

请确保Amazon SageMaker角色具有附加到其上的策略,以便能够访问S3。这可以在IAM中完成。

hfsqlsce

hfsqlsce6#

您也可以使用AWS数据管理器https://github.com/awslabs/aws-data-wrangler

import awswrangler as wr

df = wr.s3.read_csv(path="s3://...")
qojgxg4l

qojgxg4l7#

f-string的答案类似。

import pandas as pd
bucket = 'your-bucket-name'
file = 'file.csv'
df = pd.read_csv(f"s3://{bucket}/{file}")
len(df) # print row counts
kknvjkwl

kknvjkwl8#

此代码示例用于从S3导入csv文件,已在SageMaker笔记本上测试。

使用pip或conda安装s3fs. !pip install s3fs

import pandas as pd

my_bucket = '' #declare bucket name
my_file = 'aa/bb.csv' #declare file path

import boto3 # AWS Python SDK
from sagemaker import get_execution_role
role = get_execution_role()

data_location = 's3://{}/{}'.format(my_bucket,my_file)
data=pd.read_csv(data_location)
data.head(2)
7ivaypg9

7ivaypg99#

有多种方法将数据读入Sagemaker。为了使响应更全面,我正在添加细节将数据读入内存中的Sagemaker工作室笔记本以及S3安装选项。
虽然根据我的经验,笔记本电脑不推荐用于数据密集型建模,而更多地用于原型开发,但有多种方法可以将数据读入笔记本电脑。

基于内存的选项
  • 机器人3
  • S3 FS系统

Boto 3和S3 FS都可以与python库(如Pandas)结合使用,以读取内存中的数据,也可以用于将数据复制到本地示例EFS。

装载选项

这两个选项提供了类似挂载的行为,其中数据看起来像是在本地目录中进行更高的IO操作。这两个选项都有其优缺点。

相关问题