我正在尝试清理并重新创建databricks delta表以进行集成测试。
我想在devops代理上运行测试,所以我使用JDBC(Simba驱动程序),但它说不支持语句类型“DELETE”。
当我使用DBFS API“rm -r”清理底层DBFS位置时,它会清理表,但是在重新创建后再次读取会出错 - 无法找到事务日志中引用的文件。当从文件系统手动删除数据而不是使用表DELETE
语句时,会发生这种情况。
此外,如果我只是从数据上的delta表执行DELETE,我仍然会看到底层的dbfs目录和文件完好无损。如何正常清理增量和底层文件?
您可以使用VACUUM命令进行清理。我还没用过它。
如果使用spark,则可以使用overwriteSchema选项重新加载数据。
如果您可以提供有关如何使用它的更多详细信息,那就更好了
完美的步骤如下:当你做一个DROP TABLE
和DELETE FROM TABLE TABLE NAME
时,会发生以下事情:
所以,第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