Amazon Sagemaker открыть JSON из ведра S3 - PullRequest
0 голосов
/ 05 ноября 2018

Я создал корзину S3 и поместил в нее файлы data.csv и data.json. Затем я создал записную книжку Sagemaker и указал эту корзину S3 в роли IAM.

Теперь это работает внутри ноутбука:

import pandas as pd
from sagemaker import get_execution_role

bucket='my-sagemaker-bucket'
data_key = 'data.csv'
data_location = 's3://{}/{}'.format(bucket, data_key)
data = pd.read_csv(data_location)

Но эта ошибка говорит о том, что файл не существует:

import json
from sagemaker import get_execution_role

bucket='my-sagemaker-bucket'
data_key = 'data.json'
data_location = 's3://{}/{}'.format(bucket, data_key)
data = json.load(open(data_location))

Кто-нибудь знает, почему я могу читать CSV, но не JSON? Я также не могу shutil.copy CSV к текущему рабочему каталогу ноутбука (также говорит, что файл не существует). Я не очень хорошо разбираюсь в ведрах S3 или Sagemaker, поэтому не уверен, что это проблема с разрешениями / политикой или что-то еще.

Ответы [ 2 ]

0 голосов
/ 10 ноября 2018

Pandas может обрабатывать S3 URL с использованием ваших учетных данных AWS. Таким образом, вы можете использовать pd.read_csv или pd.read_json вместо json.load. Предложение от @Michael_S должно сработать.

0 голосов
/ 09 ноября 2018

у вашего SageMaker-ExecutionRole может быть недостаточно прав для доступа к вашему S3-ведру. Роль выполнения IAM-SageMaker по умолчанию имеет разрешение: «AmazonSageMakerFullAccess», в котором используется условие запроса S3 «s3: ExistingObjectTag / SageMaker = true».

Так что, возможно, вы могли бы попытаться просто пометить свой контейнер S3 (Tag: SageMaker: true). Управляйте настройками IAM.

import pandas as pd

bucket='my-sagemaker-bucket'
data_key = 'data.json'
data_location = 's3://{}/{}'.format(bucket, data_key)

pd.read_json(data_location) # , orient='columns', typ='series'
...