【问题标题】:pyspark write overwrite is partitioned but is still overwriting the previous loadpyspark write overwrite 已分区,但仍在覆盖先前的加载
【发布时间】:2019-10-23 00:18:17
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: amazon-s3 pyspark hadoop-partitioning


    【解决方案1】:

    如果您使用的是 Spark 版本 2.3 +,则此问题已通过 https://issues.apache.org/jira/browse/SPARK-20236 修复

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

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

    【讨论】:

      猜你喜欢
      • 2021-11-10
      • 1970-01-01
      • 2012-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-10
      • 1970-01-01
      • 2018-07-06
      相关资源
      最近更新 更多