【问题标题】:How to view specific changes in data at particular version in Delta Lake如何在 Delta Lake 中查看特定版本的数据的特定变化
【发布时间】:2023-03-23 23:53:02
【问题描述】:

现在我有一个包含 1 个分区的测试数据,在该分区内它有 2 个 parquet 文件

如果我将数据读取为:

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 文件中,我可以看到它在每个版本中创建了单独的 parquet 文件,但是如何在代码中查看它?

我正在使用 Spark 和 Scala

【问题讨论】:

  • 在第二组 (v0) 中不存在键的情况下加入两个怎么样?

标签: scala apache-spark delta delta-lake data-quality


【解决方案1】:

您甚至不需要进入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))

【讨论】:

    猜你喜欢
    • 2022-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-09
    • 2014-10-29
    • 1970-01-01
    • 2020-08-15
    • 2014-11-22
    相关资源
    最近更新 更多