我们如何覆盖分区数据集,但只覆盖我们要更改的分区?例如,重新计算上周的日常工作,并且只覆盖上周的数据。
Spark 的默认行为是覆盖整个表,即使只写入某些分区。
从 Spark 2.3.0 开始,这是覆盖表时的一个选项。要覆盖它,您需要设置新的spark.sql.sources.partitionOverwriteMode
设置为dynamic
,数据集需要分区,写入模式overwrite
。
例子in scala:
spark.conf.set(
"spark.sql.sources.partitionOverwriteMode", "dynamic"
)
data.write.mode("overwrite").insertInto("partitioned_table")
我建议在写入之前根据分区列进行重新分区,这样每个文件夹就不会包含 400 个文件。
在Spark 2.3.0之前,最好的解决方案是启动SQL语句删除这些分区,然后用append模式写入它们。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)