Pyspark 数据框写入镶木地板而不删除 /_temporary 文件夹

Posted

技术标签:

【中文标题】Pyspark 数据框写入镶木地板而不删除 /_temporary 文件夹【英文标题】:Pyspark dataframe write parquet without deleting /_temporary folder 【发布时间】:2020-04-03 06:54:19 【问题描述】:
df.write.mode("append").parquet(path)

我正在使用它来将 parquet 文件写入 S3 位置。似乎为了写入文件,它还创建了一个/_temporary 目录并在使用后将其删除。所以我被拒绝访问。我们 AWS 账户的管理员不想授予对该文件夹的代码删除权限。

我建议将文件写入另一个可以授予删除权限的文件夹,然后将文件复制过来。但是管理员仍然希望我将文件直接写入目标文件夹。

我可以设置某些配置来要求 Pyspark 不要删除临时目录吗?

【问题讨论】:

你如何在 AWS 上运行它。服务名称是什么 我正在使用 AWS EMR 【参考方案1】:

我认为_temporary 文件夹没有这样的选项。

但如果您在 EMR 集群上运行 Spark 作业,您可以先写入集群的本地 HDFS,然后使用 Hadoop FileUtil.copy 函数将数据复制到 S3。

在 Pyspark 上,您可以像这样通过 JVM 网关访问此功能:

sc._gateway.jvm.org.apache.hadoop.fs.FileUtil 

【讨论】:

以上是关于Pyspark 数据框写入镶木地板而不删除 /_temporary 文件夹的主要内容,如果未能解决你的问题,请参考以下文章

将小 PySpark DataFrame 写入镶木地板时出现内存错误

pyspark:数据帧写入镶木地板

无法将数据框保存到镶木地板 pyspark

当我在蜂巢中写入镶木地板表时出现 Pyspark 错误

如何使用 Pyspark 并行处理多个镶木地板文件?

udf 创建的时间序列无法写入镶木地板