我刚刚开始试用AWS SageMaker,希望将数据从S3 bucket加载到我的SageMaker python jupyter笔记本中的panda Dataframe 中进行分析。我可以使用boto从S3获取数据,但我想知道是否有一个更优雅的方法作为SageMaker框架的一部分,在我的python代码中完成此操作?提前感谢您的任何建议。
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)
txu3uszq2#
在最简单的情况下,您不需要boto3,因为您只需读取资源。那就更简单了:
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的访问权限。
4ioopgfo3#
如果你看一下here,你似乎可以在 InputDataConfig 中指定它。在文档中搜索“S3 DataSource”(ref)。第一个匹配甚至是在Python中,在第25/26页。
uwopmtnx4#
您还可以使用s3fs将存储桶作为文件系统进行访问
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))
bz4sfanl5#
请确保Amazon SageMaker角色具有附加到其上的策略,以便能够访问S3。这可以在IAM中完成。
hfsqlsce6#
您也可以使用AWS数据管理器https://github.com/awslabs/aws-data-wrangler:
import awswrangler as wr df = wr.s3.read_csv(path="s3://...")
qojgxg4l7#
与f-string的答案类似。
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
kknvjkwl8#
此代码示例用于从S3导入csv文件,已在SageMaker笔记本上测试。
使用pip或conda安装s3fs. !pip install 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)
7ivaypg99#
有多种方法将数据读入Sagemaker。为了使响应更全面,我正在添加细节将数据读入内存中的Sagemaker工作室笔记本以及S3安装选项。虽然根据我的经验,笔记本电脑不推荐用于数据密集型建模,而更多地用于原型开发,但有多种方法可以将数据读入笔记本电脑。
Boto 3和S3 FS都可以与python库(如Pandas)结合使用,以读取内存中的数据,也可以用于将数据复制到本地示例EFS。
这两个选项提供了类似挂载的行为,其中数据看起来像是在本地目录中进行更高的IO操作。这两个选项都有其优缺点。
9条答案
按热度按时间ymzxtsji1#
txu3uszq2#
在最简单的情况下,您不需要
boto3
,因为您只需读取资源。那就更简单了:
但是正如Prateek所说,请确保将您的SageMaker笔记本示例配置为具有对s3的访问权限。
4ioopgfo3#
如果你看一下here,你似乎可以在 InputDataConfig 中指定它。在文档中搜索“S3 DataSource”(ref)。第一个匹配甚至是在Python中,在第25/26页。
uwopmtnx4#
您还可以使用
s3fs
将存储桶作为文件系统进行访问bz4sfanl5#
请确保Amazon SageMaker角色具有附加到其上的策略,以便能够访问S3。这可以在IAM中完成。
hfsqlsce6#
您也可以使用AWS数据管理器https://github.com/awslabs/aws-data-wrangler:
qojgxg4l7#
与
f-string
的答案类似。kknvjkwl8#
此代码示例用于从S3导入csv文件,已在SageMaker笔记本上测试。
使用pip或conda安装s3fs.
!pip install s3fs
7ivaypg99#
有多种方法将数据读入Sagemaker。为了使响应更全面,我正在添加细节将数据读入内存中的Sagemaker工作室笔记本以及S3安装选项。
虽然根据我的经验,笔记本电脑不推荐用于数据密集型建模,而更多地用于原型开发,但有多种方法可以将数据读入笔记本电脑。
基于内存的选项
Boto 3和S3 FS都可以与python库(如Pandas)结合使用,以读取内存中的数据,也可以用于将数据复制到本地示例EFS。
装载选项
这两个选项提供了类似挂载的行为,其中数据看起来像是在本地目录中进行更高的IO操作。这两个选项都有其优缺点。