首页 > 解决方案 > 如何加快保存只有一个分区的分区数据?

问题描述

在以下情况下,spark 数据保存操作非常慢:

df按日期(年、月、日)划分的df数据框包含恰好一天的数据,例如 2019-02-14 。

如果我保存df

df.write.partitionBy("year", "month", "day").parquet("/path/")

由于所有数据属于一个分区,由一个任务(??)处理,它会很慢。

如果df使用显式分区路径保存:

df.write.parquet("/path/year=2019/month=02/day=14/")

它运行良好,但它会创建 _metadata、_common_metadata、_SUCCESS 文件"/path/year=2019/month=02/day=14/" 而不是"/path/". 删除分区列需要保留与使用方法相同的字段partitionBy

那么,如何在不更改元数据文件位置的情况下仅使用一个分区来加快保存数据的速度,可以在每个 OP 中进行更新。

使用显式分区路径而不是使用 是否安全partitionBy

标签: apache-spark

解决方案


推荐阅读