9

如何在 Databricks 中删除 Delta 表?我在文档中找不到任何信息......也许唯一的解决方案是使用魔法命令或 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 表中

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

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

%SQL
DROP TABLE 'delta.test_table'

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

4

4 回答 4

9

如果要完全删除表,则可以使用 dbutils 命令:

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

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

于 2019-11-26T01:51:17.807 回答
6

您可以使用 sql 命令执行此操作。

%sql
DROP TABLE IF EXISTS <database>.<table>
于 2019-11-22T10:22:10.600 回答
1

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

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

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

因此,如果您为托管表编写删除查询,它将删除表并同时删除数据,但在非托管表的情况下,如果您编写删除查询,它只会删除符号链接指针(表的元信息) 到表位置但您的数据没有被删除,因此您需要使用 rm 命令从外部删除数据。

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

于 2020-02-14T05:24:17.333 回答
0

从 GUI 中删除,数据 -> 数据库表 -> 选择您的数据库 -> 选择表旁边的下拉菜单并删除。我不知道这种删除的后果,所以请注意购买者

于 2021-11-10T20:13:42.597 回答