AssertionError:断言失败:没有在 Databricks 中进行 DeleteFromTable 的计划

Pet*_*e K 2 apache-spark databricks azure-databricks delta-lake

这个命令运行良好有什么原因吗:

%sql SELECT * FROM Azure.Reservations WHERE timestamp > '2021-04-02'
Run Code Online (Sandbox Code Playgroud)

返回 2 行,如下:

%sql DELETE FROM Azure.Reservations WHERE timestamp > '2021-04-02'
Run Code Online (Sandbox Code Playgroud)

失败并显示:

SQL语句中的错误:AssertionError:断言失败:没有DeleteFromTable的计划(timestamp#394 > 1617321600000000)

我是 Databricks 新手,但我确信我在另一个表上运行了类似的命令(没有 WHERE 子句)。该表是基于 Parquet 文件创建的。

Ale*_*Ott 6

DELETE FROM(以及类似的UPDATE、 或MERGE)在 Parquet 文件上不受支持 - 目前在 Databricks 上支持 Delta 格式。您可以使用CONVERT TO DELTA将镶木地板文件转换为增量文件,然后此命令将适合您。

另一种替代方法是读取 parquet 文件,过滤掉要保留的行,然后覆盖 parquet 文件。

  • 是的,你完全正确。我正要对我的问题写一条评论,我的一个朋友向我展示了我使用的是 Parquet,而不是我认为的 Delta。谢谢!:) (2认同)