我正在运行pyspark脚本,每次运行该脚本时,我都会将一些数据保存到s3存储桶中,并且我有以下代码:
data.repartition(1).write.mode("overwrite").format("parquet").partitionBy('time_key').save( "s3://path/to/directory")
它由time_key分区,但是在每次运行时,但是最新的数据转储将覆盖先前的数据,而不是添加分区。 time_key对于每次运行都是唯一的。
如果我想在每次运行时将数据写入s3并按时间键分区,这是正确的代码吗?
答案 0 :(得分:2)
如果您使用的是Spark 2.3及更高版本,则已通过https://issues.apache.org/jira/browse/SPARK-20236
解决了此问题您必须设置spark.sql.sources.partitionOverwriteMode="dynamic"
标志以覆盖数据的特定分区。
而且根据您的声明time_key对于每次运行都是唯一的,您可能可以使用附加模式本身。