apache-spark - 使用 Apache Spark 写入具有有限权限的 S3 存储桶
问题描述
我正在使用 S3a 协议写入属于其他人的存储桶。我只能使用一组有限的 S3 操作(我不知道具体是哪个)。
尝试使用 AWS Glue 使用 spark 写入数据时,我收到错误403: AccessDenied。
在 EMR 中使用 s3distcp 有效,但我必须更改基础设施的设置方式。使用允许所有 S3 操作的存储桶也可以,但我猜存储桶所有者不想更改权限。
有没有办法告诉 spark 写入数据而不需要这么多权限?
编辑: 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")
解决方案
Spark 需要 S3:DeleteObject 权限。有没有办法绕过这个?
不
需要
- 修剪目录标记对象
- 将 rename() 实现为复制 + 删除
- 清理作业尝试目录
- 在写入目录树之前删除它们
Hadoop 3.1+ S3A 连接器应该能够在不删除访问权限的情况下应对整个树。与管理员团队协商,让您的 IAM 账户拥有对所有输出所在存储桶路径的删除权限
推荐阅读
- css - 带有背景图像的线性渐变在 ios 移动设备上显示不同
- python - 使用 sqlalchemy 自动加载加载表时出现问题
- elasticsearch - Elasticsearch 错误语言检测
- postgresql - 了解如何使用嵌套循环优化 sql 查询(例如,搜索每个部门员工的最高工资)
- flutter - Flutter,如何对包含 AppLocalization(多语言)的 Widget 进行单元测试?
- ios - 快速创建框架时获取 AppDelegate 参考
- reactjs - 在反应中发送发布请求的问题
- javascript - 反应元素的多轮播映射
- java - 在无头模式下通过 RemoteWebDriver 和 chrome 下载文件
- kubernetes - Kubernetes 中本地 PersistentVolume 的 PersistentVolumeClaim 策略是什么?