在pyspark(2.2.0)中将CSV文件写入AWS时如何分配访问控制列表(ACL)?
Posted
技术标签:
【中文标题】在pyspark(2.2.0)中将CSV文件写入AWS时如何分配访问控制列表(ACL)?【英文标题】:How to assign the access control list (ACL) when writing a CSV file to AWS in pyspark (2.2.0)? 【发布时间】:2018-10-05 22:20:33 【问题描述】:我知道我可以通过
将我的 spark 数据帧作为 CSV 文件输出到 AWS S3df.repartition(1).write.csv('s3://my-bucket-name/df_name')
我的问题是,在使用 pyspark 将其写入 S3 时,是否有一种简单的方法可以将此文件的访问控制列表 (ACL) 设置为 'bucket-owner-full-control'
?
【问题讨论】:
【参考方案1】:不了解 EMR s3 连接器;在 ASF S3A 连接器中,您在打开连接时设置选项 fs.s3a.acl.default
:您不能逐个文件设置它
【讨论】:
将对象放入我的 S3 存储桶后,即使所有这些配置,我仍然收到此错误。最近有没有人解决这个问题?【参考方案2】:在构建 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
【讨论】:
【参考方案3】:遇到了完全相同的问题。 Spark 作业将文件写入到服务器端加密设置为 Access Denied 的存储桶。看了一些博客,了解到这个可以通过将fs.s3a.acl.default
参数设置为BucketOwnerFullControl
来解决。
代码如下:
val spark =SparkSession.builder.appName().getOrCreate()
spark.sparkContext.hadoopConfiguration.set("fs.s3a.acl.default", "BucketOwnerFullControl")
【讨论】:
【参考方案4】:我最近遇到了类似的问题,我已经尝试了上面提到的 我收到此错误“RemoteContext”对象没有属性“hadoopConfiguration”
【讨论】:
正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center。以上是关于在pyspark(2.2.0)中将CSV文件写入AWS时如何分配访问控制列表(ACL)?的主要内容,如果未能解决你的问题,请参考以下文章
尝试在Python中将集合的结果写入csv文件,但只打印一行
Pyspark - 将数据帧写入 2 个不同的 csv 文件