apache-spark - 仅覆盖分区 spark 数据集中的一些分区
问题描述
我们如何覆盖分区数据集,但只覆盖我们要更改的分区?例如,重新计算上周的日常工作,并且只覆盖上周的数据。
Spark 的默认行为是覆盖整个表,即使只写入一些分区。
解决方案
从 Spark 2.3.0 开始,这是覆盖表时的一个选项。要覆盖它,您需要将新spark.sql.sources.partitionOverwriteMode
设置设置为dynamic
,数据集需要分区,以及写入模式overwrite
。scala 中的示例:
spark.conf.set(
"spark.sql.sources.partitionOverwriteMode", "dynamic"
)
data.write.mode("overwrite").insertInto("partitioned_table")
我建议在写入之前根据您的分区列进行重新分区,这样每个文件夹不会有 400 个文件。
在 Spark 2.3.0 之前,最好的解决方案是启动 SQL 语句来删除这些分区,然后使用附加模式写入它们。
推荐阅读
- docker - 如何使用带有hadoop流的docker工具箱来解决多节点集群的map reduce
- .net - 在流文档中设置静态样式,以便仅 Style=(static somestyle} 与文档一起保存
- python - Arcpy 脚本循环 - 如何循环浏览文件夹中的表并在每个表上执行 arcpy 连接功能?
- xml - 如何使用 Wordpress 修改 YoastSEO 站点地图?(XML 文件)
- macos-mojave - 更改时不显示 NSTabViewItem 图像
- django - 如何通过 UserChangeForm 保存我的条目?
- vb.net - 如何在 VB.NET 中格式化 curl API 调用如何处理主 url 之后的部分
- ios - 为什么 Unity for iOS 在没有调用 WWW 类的情况下导致内存泄漏?
- r - 解决错误 - 找不到功能 ezANOVA?
- django - TRAVIS CI : ERROR 1045 (28000): Access denied for user 'root'@'localhost' (使用密码: NO)