Apache spark 具有多个s3角色的Spark会话

Apache spark 具有多个s3角色的Spark会话,apache-spark,amazon-s3,pyspark,assume-role,Apache Spark,Amazon S3,Pyspark,Assume Role,我有一个Spark工作,它从一个s3存储桶中读取文件,格式化它们,然后将它们放在另一个s3存储桶中。我正在使用(SparkSession)spark.read.csv和spark.write.csv功能来完成此任务 当我读取文件时,我需要使用一个IAM角色(假定角色),当我写入文件时,需要删除假定角色并恢复到默认角色 在同一个spark会话中,这是否可能? 如果没有,还有别的办法吗 感谢您的任何帮助 对于Hadoop 2.8+中的S3A连接器,S3A连接器支持每个bucket设置,因此您可以为不

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

当我读取文件时,我需要使用一个IAM角色(假定角色),当我写入文件时,需要删除假定角色并恢复到默认角色

在同一个spark会话中,这是否可能? 如果没有,还有别的办法吗


感谢您的任何帮助

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

在某个时刻(可能在那时,很多时候是通过hadoop 3实现的),AssumedRoleCredentialProvider会获取一组完整的凭据,并为给定的角色ARN调用AssumeRole,因此会在该角色下与s3交互

应该是个问题

  • 确保您的hadoop JAR是最新的
  • 使用完整登录设置基本设置
  • 源存储桶的每存储桶设置,以将假定角色凭据提供程序与所选arn一起使用
  • 在尝试使提交的作业正常工作之前,请确保hadoop命令行中的操作正常
  • 然后提交作业

  • 不幸的是,这并没有真正回答我的问题。我可以从一系列可能的存储桶中读取和写入数据。我需要的是两个SparkContext;一个有一套AWS证书,另一个有我给它的假定角色。不是这样的。查看每桶设置,看看你能做些什么。Hadoop 3.3+委派令牌还允许您使用本地登录为bucket收集会话凭据,而所有其他bucket将使用EC2的默认IAM角色VM@ehlJay要处理任意的输入和输出桶,您可以通过在spark context hadoopConfiguration()上设置属性,在运行时配置每个bucket的设置。您的凭据提供程序选项取决于spark正在使用的hadoop版本。hadoop 3.2有一个合适的AssumedRolecRedential提供程序。对于2.9(可能是2.8),可以通过在运行之前收集假定的角色凭据来使用临时AWSCredentialsProvider。