繁体   English   中英

将 S3 数据加载到 AWS SageMaker Notebook

[英]Load S3 Data into AWS SageMaker Notebook

我刚开始试验 AWS SageMaker,想将数据从 S3 存储桶加载到我的 SageMaker python jupyter 笔记本中的 pandas dataframe 进行分析。

我可以使用 boto 从 S3 获取数据,但我想知道是否有更优雅的方法作为 SageMaker 框架的一部分在我的 python 代码中执行此操作?

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)

在最简单的情况下,您不需要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。 这是在权限 > IAM 角色中的配置步骤中完成的

如果你看看这里,你似乎可以在InputDataConfig 中指定它。 在文档中搜索“S3DataSource”( ref )。 第一个命中甚至是在 Python 中,第 25/26 页。

您还可以使用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))

请确保 Amazon SageMaker 角色附加了策略以访问 S3。 它可以在 IAM 中完成。

您还可以使用 AWS Data Wrangler https://github.com/awslabs/aws-data-wrangler

import awswrangler as wr

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

此代码示例用于从 S3 导入 csv 文件,在 SageMaker notebook 上进行了测试。

使用 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)

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

有多种方法可以将数据读入 Sagemaker。 为了使响应更全面,我添加了详细信息以将数据读入 memory 中的 Sagemaker Studio Notebook 以及 S3 安装选项。

虽然根据我的经验,不建议将 Notebook 用于数据密集型建模,而是更多地用于原型制作,但可以通过多种方式将数据读入其中。

基于 Memory 的选项

  • 博图3
  • S3FS

Boto3和S3FS也可以和Pandas等python库结合使用,读取memory中的数据,也可以用来复制数据到本地实例EFS。

安装选项

这两个选项提供类似挂载的行为,其中数据似乎位于本地目录中以进行更高的 IO 操作。 这两种选择都有其优点和缺点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM