Подключите AWS S3 к Databricks PySpark - PullRequest
0 голосов
/ 04 ноября 2019

Я пытаюсь подключиться и прочитать все мои csv-файлы из s3 bucket с помощью pyspark блоков данных. Когда я использую какой-то сегмент, к которому у меня есть доступ администратора, он работает без ошибок

data_path = 's3://mydata_path_with_adminaccess/'

Но когда я пытался подключиться к некоторому сегменту, которому требуются ACCESS_KEY_ID и SECRET_ACCESS_KEY, он не будет работать, и доступ запрещен:

Я пробовал:

data_path = 's3://mydata_path_without_adminaccess/'

AWS_ACCESS_KEY_ID='my key'
AWS_SECRET_ACCESS_KEY='my key'

и:

data_path = ='s3://<MY_ACCESS_KEY_ID>:<My_SECRET_ACCESS_KEY>@mydata_path_without_adminaccess

1 Ответ

1 голос
/ 05 ноября 2019

Я не совсем уверен, пытались ли вы монтировать ваше ведро в блоки данных, используя секрет и ключи, но стоит попробовать:

Вот код для того же:

ACCESS_KEY = dbutils.secrets.get(scope = "aws", key = "aws-access-key")
SECRET_KEY = dbutils.secrets.get(scope = "aws", key = "aws-secret-key")
ENCODED_SECRET_KEY = SECRET_KEY.replace("/", "%2F")
AWS_BUCKET_NAME = "<aws-bucket-name>"
MOUNT_NAME = "<mount-name>"

dbutils.fs.mount("s3a://%s:%s@%s" % (ACCESS_KEY, ENCODED_SECRET_KEY, AWS_BUCKET_NAME), "/mnt/%s" % MOUNT_NAME)
display(dbutils.fs.ls("/mnt/%s" % MOUNT_NAME))

и затем вы можете получить доступ к файлам в вашем S3-контейнере, как если бы они были локальными файлами:

df = spark.read.text("/mnt/%s/...." % MOUNT_NAME)

Дополнительная ссылка:

https://docs.databricks.com/data/data-sources/aws/amazon-s3.html

Надеюсь, это поможет.

...