Spark:覆盖分区文件夹
Spark: overwrite partitioned folders
我在 Spark 3.1 上有一个工作流程,最后将按年、月、日、小时分区的数据框写入 S3。我希望 S3 中每个“文件夹”中的文件都被覆盖,但它们总是被附加。知道可能是什么问题吗?
spark.conf.set("spark.sql.sources.partitionOverwriteMode", "dynamic")
df
.write
.mode(SaveMode.Overwrite)
.partitionBy("year", "month", "day", "hour")
.json(outputPath)
我推荐这个版本:
df
.write
.mode('overwrite')
.partitionBy("year", "month", "day", "hour")
.json(outputPath)
或这个:
df
.write
.mode(SaveMode.Overwrite)
.partitionBy("year", "month", "day", "hour")
.json(outputPath)
对于旧版本的 Spark,您可以使用以下命令用 RDD 内容覆盖输出目录:
sparkConf.set("spark.hadoop.validateOutputSpecs", "false")
val sparkContext = SparkContext(sparkConf)
这似乎是 Spark 3.1 上的一个错误。降级到 Spark 3.0.1 有帮助。
我在 Spark 3.1 上有一个工作流程,最后将按年、月、日、小时分区的数据框写入 S3。我希望 S3 中每个“文件夹”中的文件都被覆盖,但它们总是被附加。知道可能是什么问题吗?
spark.conf.set("spark.sql.sources.partitionOverwriteMode", "dynamic")
df
.write
.mode(SaveMode.Overwrite)
.partitionBy("year", "month", "day", "hour")
.json(outputPath)
我推荐这个版本:
df
.write
.mode('overwrite')
.partitionBy("year", "month", "day", "hour")
.json(outputPath)
或这个:
df
.write
.mode(SaveMode.Overwrite)
.partitionBy("year", "month", "day", "hour")
.json(outputPath)
对于旧版本的 Spark,您可以使用以下命令用 RDD 内容覆盖输出目录:
sparkConf.set("spark.hadoop.validateOutputSpecs", "false")
val sparkContext = SparkContext(sparkConf)
这似乎是 Spark 3.1 上的一个错误。降级到 Spark 3.0.1 有帮助。