Databricks 删除一个增量 table?

Databricks drop a delta table?

如何在 Databricks 中删除 Delta Table?我在文档中找不到任何信息...也许唯一的解决方案是使用魔术命令或 dbutils:

删除文件夹 'delta' 中的文件
%fs rm -r delta/mytable?

编辑:

为了清楚起见,我在这里放了一个非常基本的例子。

示例:

#create dataframe...
from pyspark.sql.types import *

cSchema = StructType([StructField("items", StringType())\
                      ,StructField("number", IntegerType())])

test_list = [['furniture', 1], ['games', 3]]

df = spark.createDataFrame(test_list,schema=cSchema)

并将其保存在 Delta table

df.write.format("delta").mode("overwrite").save("/delta/test_table")

然后,如果我尝试删除它.. drop table 或类似的操作是不可能的

%SQL
DROP TABLE 'delta.test_table'

其他选项都没有,例如 drop table 'delta/test_table',等等...

你可以使用 sql 命令来做到这一点。

%sql
DROP TABLE IF EXISTS <database>.<table>

如果你想完全删除 table 那么 dbutils 命令是可行的方法:

dbutils.fs.rm('/delta/test_table',recurse=True)

据我了解,您保存的增量 table 位于 blob 存储中。删除连接的数据库 table 会将其从数据库中删除,但不会从存储中删除。

基本上在数据块中,Table 有 2 种类型 - 托管和非托管

1.Managed - tables 其中 Spark 管理数据和元数据,Databricks 将元数据和数据存储在您帐户中的 DBFS 中。

2.Unmanaged - databricks 仅管理元数据,但数据不由 databricks 管理。

因此,如果您为 Managed tables 编写删除查询,它将删除 table 并同时删除数据,但对于 Unmanaged tables 如果您写一个 drop query 它会简单地删除指向 table 位置的 sym-link 指针(table 的元信息)但是你的数据不会被删除,所以你需要从外部删除数据使用 rm 命令。

了解更多信息: https://docs.databricks.com/data/tables.html

从GUI中删除, Data -> DatabaseTables -> 选择你的数据库 -> select table 旁边的下拉菜单并删除。 我不知道这种类型的删除的后果,所以买者自负