繁体   English   中英

如何查看 Delta Lake 中特定版本数据的特定变化

[英]How to view specific changes in data at particular version in Delta Lake

现在我有一个测试数据,它有 1 个分区,在该分区内有 2 个镶木地板文件

如果我将数据读取为:

val df = spark.read.format("delta").load("./test1510/table@v1")

然后我得到 10,000 行的最新数据,如果我读到:

val df = spark.read.format("delta").load("./test1510/table@v0")

然后我得到 612 行,现在我的问题是:如何仅查看在版本 1 中添加的那些新行,即 10,000 - 612 = 9388 行

简而言之,在每个版本中,我只想查看哪些数据发生了变化。 总体而言,在 delta 日志中,我可以看到 json 文件,在 json 文件中,我可以看到它在每个版本中创建了单独的镶木地板文件,但如何在代码中查看它?

我在 Scala 中使用 Spark

您甚至不需要进入parquet文件级别。 您可以简单地使用 SQL 查询来实现这一点。

%sql 
SELECT * FROM test_delta VERSION AS OF 2 minus SELECT * FROM test_delta VERSION AS OF 1

上面的代码将为您提供版本 2 中新添加的行,而这些行不在版本 1 中

在您的情况下,您可以执行以下操作

val df1 = spark.read.format("delta").load("./test1510/table@v1")
val df2 = spark.read.format("delta").load("./test1510/table@v0")
display(df2.except(df1))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM