подскажите плз.
Если задать креды на чтение s3 при создании сессии, все ок
conf.set('spark.hadoop.fs.s3a.bucket.name.access.key', S3A_ACCESS_KEY_NAME)
conf.set('spark.hadoop.fs.s3a.bucket.name.secret.key', S3A_SECRET_KEY_NAME)
conf.set('spark.hadoop.fs.s3a.bucket.name.endpoint', S3A_ENDPOINT_NAME)
spark = (SparkSession.builder
.config(conf)
.appName('counter_app')
.getOrCreate())
Далее свободно читаю файл:
spark.read.option("recursiveFileLookup", "true").load(path, format=format).createOrReplaceTempView(veiw_name)
Но это не удобно.
Можно ли передавать креды на s3 (ну или вообще другие) непосредственно при выполнении spark.read?
В качестве option, например
Я делаю универсальный инструмент, а не разовую задачу, и было бы гораздо передавать в спарк креды к определенному расположению файла в момент чтения, а не заранее их все конфигурировать
Спасибо!
Возьми kyuubi
Спасибо за ответ! Но еще один новый инструмент - точно не вариант. В волт я пойду, да, только это кажется не решает непосредственно вопрос. Вопрос, заключается в том, можно ли после сконфигурированной спарксессии докидывать в нее conf.set с кредами, или передавать нужные креды при чтении в рамках этой сессии
можно, но дикой жепной магией
поздно https://onetl.readthedocs.io/en/0.9.4/connection/file_df_connection/spark_s3/connection.html https://github.com/MobileTeleSystems/onetl/blob/develop/onetl/connection/file_df_connection/spark_s3/connection.py#L432
поидее даже креды сувать в сессию таким образом плохо; надо кред провайдер чтоб читал их из среды
Спасибо, учту на будущее!
Типа чтобы драйвер из переменных окружения брал до старта сессии?
и драйвер и екзекуторы; не знаю наскок ‘заранее’ :д но из среды; не только переменными конфижутся доступы ж
А какие еще есть способы?
Стерилизовать в куб контейнер как сайд кард
проперти а не енв вары, енв вары, енв вары с сешн токеном, все тоже самое; и можно ассумить роли (стс); iam провайдед доступы
реализовать AWSCredentialsProvider конечно можно, но он не принимает ничего что за бакет и тд там условно лишь 2 метода public AWSCredentials getCredentials(); public void refresh(); через конф как раз идёт манипуляция если разным бакетам нужны разные креденшелы есть линки как через кред провайдер указачать разные креды для разных бакетов?
я думаю если такая ситуация нужна роль у которой нужные длступы к нужным бакетам чтоб без этих танцев
Обсуждают сегодня