在pyspark(2.2.0)中将CSV文件写入AWS时,如何分配访问控制列表(ACL)?

时间:2018-10-05 22:20:33

标签: amazon-web-services csv amazon-s3 pyspark acl

我知道我可以通过

将我的spark数据帧作为CSV文件输出到AWS S3。
df.repartition(1).write.csv('s3://my-bucket-name/df_name')

我的问题是,使用pyspark将文件写入S3时,是否有一种简单的方法将此文件的访问控制列表(ACL)设置为'bucket-owner-full-control'

3 个答案:

答案 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')

参考:s3 documentation

答案 2 :(得分:1)

遇到完全相同的问题。 Spark作业将文件写入到服务器端加密设置为拒绝访问的存储桶中。阅读一些博客后,我了解到可以通过将fs.s3a.acl.default参数设置为BucketOwnerFullControl来解决此问题。 这是代码:

val spark =SparkSession.builder.appName().getOrCreate()

spark.sparkContext.hadoopConfiguration.set("fs.s3a.acl.default", "BucketOwnerFullControl")