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.
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)
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
Assurez-vous que le rôle Amazon SageMaker est associé à une stratégie pour pouvoir accéder à S3. Cela peut être fait dans IAM.
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))