web-dev-qa-db-ja.com

S3データをAWS SageMakerノートブックにロードする

AWS SageMakerの実験を始めたばかりで、S3バケットからSageMakerのpandasデータフレームpython jupyterノートブックにデータをロードして分析したい。

Botoを使用してS3からデータを取得することもできますが、SageMakerフレームワークの一部として、pythonコードでこれを行うためのよりエレガントなメソッドがありますか?

アドバイスを事前に感謝します。

14
A555h55

外観が here の場合、InputDataConfigで指定できるようです。ドキュメントで「S3DataSource」( ref )を検索します。最初のヒットは25/26ページのPythonでさえもです。

6
Jonatan
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)
26
Chhoser

最も単純なケースでは、リソースはreadだけなので、_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にアクセスできます。これは、[Permissions]> [IAMロール]の設定ステップで実行されます

4
ivankeller

Amazon SageMakerロールにS3にアクセスするためのポリシーがアタッチされていることを確認してください。 IAMで実行できます。

3
Prateek Dubey

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))
2
Ben