web-dev-qa-db-fra.com

Charger des données S3 dans AWS SageMaker Notebook

Je viens juste de commencer à expérimenter avec AWS SageMaker et j'aimerais charger les données d'un compartiment S3 dans un pandas dataframe de mon SageMaker python jupyter notebook for analysis). .

Je pourrais utiliser boto pour récupérer les données de S3, mais je me demande s’il existe, dans le cadre de SageMaker, une méthode plus élégante permettant de le faire dans mon code python?

Merci d'avance pour tout conseil.

14
A555h55

Si vous avez un oeil ici il semble que vous puissiez le spécifier dans le InputDataConfig . Recherchez "S3DataSource" ( ref ) dans le document. Le premier résultat est même en Python, page 25/26.

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

Dans le cas le plus simple, vous n'avez pas besoin de boto3, parce que vous venez de lire des ressources.
Alors c'est encore plus simple:

import pandas as pd

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

pd.read_csv(data_location)

Mais comme Prateek l'a déclaré, assurez-vous de configurer votre instance de bloc-notes SageMaker. avoir accès à s3. Ceci est fait à l'étape de configuration dans Autorisations> Rôle IAM

4
ivankeller

Assurez-vous que le rôle Amazon SageMaker est associé à une stratégie pour pouvoir accéder à S3. Cela peut être fait dans IAM.

3
Prateek Dubey

Vous pouvez également accéder à votre compartiment en tant que système de fichiers à l'aide de 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