向按日期分区的Parquet文件追加数据时,同分区数据是否会被覆盖?
Spark Parquet分区追加数据的行为解析
放心,不会覆盖之前的分区数据,而是会向DATE=2021-04-19分区追加新的Parquet文件。
具体来说:
- 你用的
mode('append')是Spark写入的核心控制参数,它明确告诉Spark要在现有数据集的基础上添加新数据,而非替换。 - 配合
partitionBy("DATE")时,Spark会先定位到对应日期的分区目录(也就是s3://path/DATE=2021-04-19/),然后把新数据生成的Parquet文件直接放到这个目录里,完全不会动之前已经存在的1am-1pm数据的文件。
额外补充几个关键点:
- 之后读取这个分区的数据时,Spark会自动扫描该目录下所有的Parquet文件,把它们合并成完整的数据集(包含前后两次写入的所有数据)。
- 要注意:
append模式不会帮你处理重复数据,如果新数据里有和旧数据重复的记录,它们会被一起保留。如果需要避免重复,你得自己提前做去重逻辑,比如先读取已有分区数据合并去重后再写入,或者用其他方式处理。
内容的提问来源于stack exchange,提问作者thentangler
相关产品推荐
相关产品推荐

