azure - 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
解决方案
请检查您是否使用了正确版本的 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>
推荐阅读
- regex - 从 hive 中的字符串中提取 email_address
- css - 如何修复 flex mat-form-field 容器?
- javascript - 获取数据时useEffect问题不起作用
- html - 移动/响应式菜单 - 如何调整随下拉菜单移动的 div 元素的位置
- javascript - React redux调度错误:未定义错误
- python - 在 NetworkX 中按年分组以计算年连接数
- javascript - 在 HTML 中嵌入可填写的 PDF 表单,上传已填写的 PDF
- python - python telnet.mt_interact 在任何 IDE 中都不起作用,但 SPYDER
- tcp - 是否有 WPA2 安全 MAVLINK 协议通信?
- python - 将项目添加到购物车 python 请求?