Я хочу прочитать файл S3 с моей (локальной) машины, через Spark (pyspark, действительно). Теперь я продолжаю получать ошибки аутентификации, например
java.lang.IllegalArgumentException: идентификатор ключа доступа AWS и секрет Ключ доступа должен быть указан как имя пользователя или пароль (соответственно) URL-адреса s3n или установкой fs.s3n.awsAccessKeyId или fs.s3n.awsSecretAccessKey(соответственно).
Я смотрел повсюду здесь и в Интернете, пробовал много вещей, но, по-видимому, S3 менялся за последний год или месяцы, и все методы не удались, но один:
pyspark.SparkContext().textFile("s3n://user:[email protected]/key")
(обратите внимание, что s3n
[s3
не работает]). Теперь я не хочу использовать URL с пользователем и паролем, потому что они могут появляться в журналах, и я также не уверен, как их получить из файла ~/.aws/credentials
.
Итак, как я могу читать локально с S3 через Spark (или, лучше, pyspark), используя учетные данные AWS из файла standard ~/.aws/credentials
в идеале, без копирования учетных данных в другой файл конфигурации)?
PS: Я пробовал os.environ["AWS_ACCESS_KEY_ID"] = …
и os.environ["AWS_SECRET_ACCESS_KEY"] = …
, это не сработало.
PPS: я не уверен, где "установить свойства fs.s3n.awsAccessKeyId или fs.s3n.awsSecretAccessKey" (Google ничего не придумал). Тем не менее, я пробовал много способов установить их: SparkContext.setSystemProperty()
, sc.setLocalProperty()
и conf = SparkConf(); conf.set(…); conf.set(…); sc = SparkContext(conf=conf)
. Ничего не получилось.