我知道我可以通过
将我的spark数据帧作为CSV文件输出到AWS S3。df.repartition(1).write.csv('s3://my-bucket-name/df_name')
我的问题是,使用pyspark将文件写入S3时,是否有一种简单的方法将此文件的访问控制列表(ACL)设置为'bucket-owner-full-control'
?
答案 0 :(得分:1)
不了解EMR s3连接器;在ASF S3A连接器中,您可以在打开连接时设置选项fs.s3a.acl.default
:您不能逐个文件地对其进行设置
答案 1 :(得分:1)
可以在构建Spark会话后通过Hadoop配置设置访问控制列表(ACL)。
from pyspark.sql import SparkSession
spark = SparkSession.builder.appName('YourAppName').getOrCreate()
设置ACL如下:
spark.sparkContext.hadoopConfiguration().set('fs.s3.canned.acl', 'BucketOwnerFullControl')
答案 2 :(得分:1)
遇到完全相同的问题。 Spark作业将文件写入到服务器端加密设置为拒绝访问的存储桶中。阅读一些博客后,我了解到可以通过将fs.s3a.acl.default
参数设置为BucketOwnerFullControl
来解决此问题。
这是代码:
val spark =SparkSession.builder.appName().getOrCreate()
spark.sparkContext.hadoopConfiguration.set("fs.s3a.acl.default", "BucketOwnerFullControl")