清理和重新创建数据库delta表的最佳方法是什么?

问题描述 投票:0回答:2

我正在尝试清理并重新创建databricks delta表以进行集成测试。

我想在devops代理上运行测试,所以我使用JDBC(Simba驱动程序),但它说不支持语句类型“DELETE”。

当我使用DBFS API“rm -r”清理底层DBFS位置时,它会清理表,但是在重新创建后再次读取会出错 - 无法找到事务日志中引用的文件。当从文件系统手动删除数据而不是使用表DELETE语句时,会发生这种情况。

此外,如果我只是从数据上的delta表执行DELETE,我仍然会看到底层的dbfs目录和文件完好无损。如何正常清理增量和底层文件?

databricks azure-databricks delta-lake
2个回答
0
投票

您可以使用VACUUM命令进行清理。我还没用过它。

如果使用spark,则可以使用overwriteSchema选项重新加载数据。

如果您可以提供有关如何使用它的更多详细信息,那就更好了


0
投票

完美的步骤如下:当你做一个DROP TABLEDELETE FROM TABLE TABLE NAME时,会发生以下事情:

  • DROP TABLE:删除表但数据仍然存在。(此外,您无法在同一位置创建模式更改的新表定义。)
  • DELETE FROM TABLE删除表中的数据,但事务日志仍然存在。

所以,第1步 - DROP TABLE schema.Tablename

第2步 - %fs rm -r /mnt/path/where/your/table/definition/is/pointed/fileNames.parquet

第3步 - %fs ls确保该位置没有数据,也没有事务日志

第4步:现在> !!!!! RE_RUN你的CREATE TABLE语句,你想要的任何变化UISNG delta location /mnt/path/where/your/table/definition/is/pointed/fileNames.parquet

第5步:开始使用表并验证使用%sql desc formatted schema.Tablename

© www.soinside.com 2019 - 2024. All rights reserved.