具有多个s3角色的Spark会话

问题描述

我有一个Spark作业,可以从s3存储桶中读取文件,对其进行格式化,然后将其放置在另一个s3存储桶中。我正在使用(SparkSession)spark.read.csv和spark.write.csv功能来完成此操作

当我读取文件时,我需要使用一个IAM角色(承担角色),而当我编写文件时,需要删除假定的角色并恢复为认角色。

在同一个Spark会话中有可能吗? 如果没有,还有另一种方法吗?

感谢您的帮助!

解决方法

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

在某个时候(大概在那时,hadoop 3会非常多),AssumedRoleCredentialProvider会获取一组完整的凭据,并为给定角色ARN调用AssumeRole,因此将在该角色下与s3交互。

应该是

的问题
  1. 确保您的hadoop-jars是最新的
  2. 使用完整的登录名设置基本设置
  3. 源存储区的每个存储区设置,以将假定的角色凭据提供程序与所选的arn一起使用
  4. 在尝试使提交的作业正常工作之前,请确保从hadoop命令行运行正常。
  5. 然后提交工作。