需要一种优雅的方式将 Delta Lake 回滚到以前的版本。
我目前的方法如下:
import io.delta.tables._
val deltaTable = DeltaTable.forPath(spark, testFolder)
spark.read.format("delta")
.option("versionAsOf", 0)
.load(testFolder)
.write
.mode("overwrite")
.format("delta")
.save(testFolder)
Run Code Online (Sandbox Code Playgroud)
但这很丑陋,因为需要重写整个数据集。似乎一些元更新就足够了,不需要数据 I/O。有人知道更好的方法吗?
当新分区添加到 Athena 表时,我们可以使用 Glue Crawler 或 MSCK REPAIR TABLE 来更新元信息。他们的成本是多少?哪一个是首选?