pyspark写入覆盖已分区,但仍覆盖先前的加载

时间:2019-10-23 00:18:17

标签: amazon-s3 pyspark hadoop-partitioning

我正在运行pyspark脚本,每次运行该脚本时,我都会将一些数据保存到s3存储桶中,并且我有以下代码:

data.repartition(1).write.mode("overwrite").format("parquet").partitionBy('time_key').save( "s3://path/to/directory")

它由time_key分区,但是在每次运行时,但是最新的数据转储将覆盖先前的数据,而不是添加分区。 time_key对于每次运行都是唯一的。

如果我想在每次运行时将数据写入s3并按时间键分区,这是正确的代码吗?

1 个答案:

答案 0 :(得分:2)

如果您使用的是Spark 2.3及更高版本,则已通过https://issues.apache.org/jira/browse/SPARK-20236

解决了此问题

您必须设置spark.sql.sources.partitionOverwriteMode="dynamic"标志以覆盖数据的特定分区。

而且根据您的声明time_key对于每次运行都是唯一的,您可能可以使用附加模式本身。