具有多个 s3 角色的 Spark 会话

ehl*_*Jay 5 amazon-s3 apache-spark pyspark assume-role

我有一个 Spark 作业,它从 s3 存储桶读取文件,格式化它们,然后将它们放入另一个 s3 存储桶中。我正在使用(SparkSession)spark.read.csv和spark.write.csv功能来完成此任务

当我读取文件时,我需要使用一个 IAM 角色(代入角色),而当我写入文件时,需要删除代入角色并恢复为我的默认角色。

这在同一个 Spark 会话中可能吗?如果没有,还有其他方法可以做到这一点吗?

感谢任何和所有的帮助!

Ste*_*ran 0

对于 Hadoop 2.8+ 中的 S3A 连接器,S3A 连接器支持每个存储桶设置,因此您可以为不同的存储桶提供不同的登录选项

在某个时刻(也许大约在那时,很大程度上是在 hadoop 3 中),AssumedRoleCredentialProvider 会获取一组完整凭证并针对给定角色 ARN 调用 AssumeRole,因此会在该角色下与 s3 进行交互。

应该是问题

  1. 确保您的 hadoop-jar 是最新的
  2. 使用完整登录设置基本设置
  3. 源存储桶的每个存储桶设置,以使用具有所选 arn 的假定角色凭证提供程序
  4. 在尝试让提交的作业正常工作之前,请确保 hadoop 命令行中的操作正常。
  5. 然后提交作业。