我正在使用s3a协议写入一个属于其他人的bucket。我只允许使用一组有限的s3操作(我不知道具体是哪一个)。
当尝试使用aws glue用spark编写数据时,我得到一个错误403:accessdenied。
使用s3distcp可以从emr工作,但是我必须改变基础设施的设置方式。使用一个允许所有s3操作的bucket也可以,但是我猜bucket所有者不想更改权限。
有没有一种方法可以告诉spark在不需要那么多权限的情况下编写数据?
edit:spark需要s3:deleteobject权限。有没有办法绕过这个问题?
代码如下:
sparkSession.sparkContext.hadoopConfiguration.set("fs.s3a.bucket.some-bucket.access.key", "accesskey")
sparkSession.sparkContext.hadoopConfiguration.set("fs.s3a.bucket.some-bucket.secret.key", "secretkey")
data.write.csv(s"s3a://some-bucket/test")
1条答案
按热度按时间plicqrtu1#
spark需要s3:deleteobject权限。有没有办法绕过这个问题?
不
需要
删除目录标记对象
将rename()实现为copy+delete
清除作业尝试目录
在写入目录树之前删除它们
hadoop3.1+s3a连接器应该能够在没有删除访问的情况下处理所有的树。与管理团队协商,使您的iam帐户在所有输出所在的bucket路径上具有删除权限