Загрузка данных из S3 в dask dataframe - PullRequest
0 голосов
/ 14 января 2019

Я могу загрузить данные, только если я изменю параметр «anon» на True после открытия файла.

df = dd.read_csv('s3://mybucket/some-big.csv',  storage_options = {'anon':False})

Это не рекомендуется по очевидным причинам. Как безопасно загрузить данные из S3?

Ответы [ 2 ]

0 голосов
/ 15 января 2019

Если вы находитесь в своем виртуальном частном облаке (VPC), s3, вероятно, уже будет иметь учетные данные, и вы сможете прочитать файл без ключа:

import dask.dataframe as dd
df = dd.read_csv('s3://<bucket>/<path to file>.csv')

Если вы не авторизованы, вы можете использовать параметр storage_options и передать пару ключей (ключ и секрет):

import dask.dataframe as dd
storage_options = {'key': <s3 key>, 'secret': <s3 secret>}
df = dd.read_csv('s3://<bucket>/<path to file>.csv', storage_options=storage_options)

Полную документацию от dask можно найти здесь

0 голосов
/ 14 января 2019

Бэкэнд, который загружает данные из s3, это s3fs, и у него есть раздел с учетными данными здесь , который в основном указывает на документацию boto3.

Краткий ответ: существует несколько способов предоставления учетных данных S3, некоторые из которых являются автоматическими (файл в нужном месте или переменные среды - которые должны быть доступны всем работникам или службе метаданных кластера).

В качестве альтернативы, вы можете предоставить свой ключ / секрет непосредственно в вызове, но это, конечно, должно означать, что вы доверяете своей платформе исполнения и общению между работниками

df = dd.read_csv('s3://mybucket/some-big.csv',  storage_options = {'key': mykey, 'secret': mysecret})

Набор параметров, которые вы можете передать в storage_options при использовании s3fs, можно найти в API документах .

Общая справка http://docs.dask.org/en/latest/remote-data-services.html

...