问题描述
我有一个Spark作业,可以从s3存储桶中读取文件,对其进行格式化,然后将其放置在另一个s3存储桶中。我正在使用(SparkSession)spark.read.csv和spark.write.csv功能来完成此操作
当我读取文件时,我需要使用一个IAM角色(承担角色),而当我编写文件时,需要删除假定的角色并恢复为默认角色。
在同一个Spark会话中有可能吗? 如果没有,还有另一种方法吗?
感谢您的帮助!
解决方法
对于Hadoop 2.8+中的S3A连接器,S3A连接器支持每个存储桶设置,因此您对不同存储桶具有不同的登录选项
在某个时候(大概在那时,hadoop 3会非常多),AssumedRoleCredentialProvider会获取一组完整的凭据,并为给定角色ARN调用AssumeRole,因此将在该角色下与s3交互。
应该是
的问题- 确保您的hadoop-jars是最新的
- 使用完整的登录名设置基本设置
- 源存储区的每个存储区设置,以将假定的角色凭据提供程序与所选的arn一起使用
- 在尝试使提交的作业正常工作之前,请确保从hadoop命令行运行正常。
- 然后提交工作。