不通过 Spark 获取 Delta Lake Snapshot
本文转载自公众号:偷闲小苑
原文链接
01 背景
Delta Lake 进行数据删除或更新操作时实际上只是对被删除数据文件做了一个 remove 标记,在进行 vacuum 前并不会进行物理删除,因此一些例如在 web 上获取元数据或进行部分数据展示的操作如果直接从表路径下获取 parquet 文件信息,读到的可能是历史已经被标记删除的数据。
Delta Lake 官方提供了 API 可以通过其 snapshot 获取相应表或分区对应的真实 parquet 路径,但其目前强依赖 Spark ,需要传入 SparkSession,例如
val snapshot = DeltaLog.forTable(spark, location).snapshot
如果仅仅只是想获取 snapshot,通过这种方式冷启动耗时会比较长。Delta Lake