【问题标题】:Spark Delta table restore to versionSpark Delta 表恢复到版本
【发布时间】:2021-07-20 01:59:35
【问题描述】:

我正在尝试通过 spark java 将 delta 表恢复到以前的版本,我正在使用本地 ide。代码如下

import io.delta.tables.*; 
DeltaTable deltaTable = DeltaTable.forPath(spark, <path-to-table>); 
DeltaTable deltaTable = DeltaTable.forName(spark, <table-name>); 
deltaTable.restoreToVersion(0) // restore table to     oldest version
deltaTable.restoreToTimestamp("2019-02-14") // restore to a specific timestamp

根据文档databricks doc,此处给出的方法在 delta-core 版本 0.8.0 中不可用。该方法也不在api docs中。

这仅在 Datbricks 运行时可用吗?

目前我必须加载以前的版本并使用 delta 重写 df。有没有更好的方法来做到这一点?

【问题讨论】:

    标签: apache-spark databricks delta-lake


    【解决方案1】:

    正如您猜对的那样,restoreToVersionrestoreToTimestamp 这些方法是特定于数据块的,并且不存在于开源 deltalake 版本中。开源 deltalake 中没有此类方法的踪迹,您可以在 delta-lake repository 中查看这些方法

    所以目前据我所知,除了从以前的版本重写之外没有其他方法,如this question的答案中所述

    【讨论】:

      【解决方案2】:

      回滚“restoreVersion”很像这样:

      在python中

      delta_table_path = "/tmp/delta-table"
      df = spark.read.format("delta").option("versionAsOf", 0).load(delta_table_path)     
      df.show()
      

      在 Java 中:

      String delta_table_path = "/tmp/delta-table"
      Dataset<Row> df = spark.read().format("delta").option("versionAsOf", 0).load(delta_table_path);
      df.show();
      

      在 Scala 中:

      var delta_table_path = "/tmp/delta-table"
      val df = spark.read.format("delta").option("versionAsOf", 0).load(delta_table_path)
      df.show()
      

      【讨论】:

        猜你喜欢
        • 2023-03-07
        • 1970-01-01
        • 2014-03-31
        • 1970-01-01
        • 2020-06-12
        • 1970-01-01
        • 1970-01-01
        • 2012-05-30
        • 2011-10-01
        相关资源
        最近更新 更多