首页 > 解决方案 > Delta 湖 RESTORE 问题(Databricks)

问题描述

我正在研究 Azure 数据块并在 ADLS Gen2 上创建了一个增量表。

我已经创建了 4 个版本的 delta Lake。

我正在尝试使用以下命令恢复到版本号 2。

%sql
RESTORE TABLE Sales TO VERSION AS OF 2

有人可以告诉我为什么我无法恢复到旧版本吗?现在发生如下错误。

Error in SQL statement: ParseException: 
extraneous input 'RESTORE' expecting {'(', 'CONVERT', 'COPY', 'OPTIMIZE', 'ADD', 'ALTER', 'ANALYZE', 'CACHE', 'CLEAR', 'COMMENT', 'COMMIT', 'CREATE', 'DELETE', 'DESC', 'DESCRIBE', 'DFS', 'DROP', 'EXPLAIN', 'EXPORT', 'FROM', 'GRANT', 'IMPORT', 'INSERT', 'LIST', 'LOAD', 'LOCK', 'MAP', 'MERGE', 'MSCK', 'REDUCE', 'REFRESH', 'REPLACE', 'RESET', 'REVOKE', 'ROLLBACK', 'SELECT', 'SET', 'SHOW', 'START', 'TABLE', 'TRUNCATE', 'UNCACHE', 'UNLOCK', 'UPDATE', 'USE', 'VALUES', 'WITH'}(line 1, pos 0)

== SQL ==
RESTORE TABLE Sales TO VERSION AS OF 2

标签: azuredatabricksazure-databricksdelta-lake

解决方案


请检查您是否使用了正确版本的 Databricks 运行时。根据文档,它仅从 DBR 7.4 开始可用,而在早期版本中不可用。我刚刚检查了 DBR 7.5,它工作得很好

如果您使用的是早期版本的 Databricks Runtime,则可以使用INSERT OVERWRITE语句选择特定版本的表:

insert overwrite <table> SELECT * FROM <table> VERSION AS OF <version>

或者另一种可能性是使用TRUNCATE TABLE + INSERT INTO

truncate table <table>;
INSERT INTO <table> SELECT * FROM <table> VERSION AS OF <version>

推荐阅读