Databricks删除增量表?

时间:2019-11-22 09:01:58

标签: databricks

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

然后,如果我尝试将其删除..用删除表或类似操作是不可能的

%SQL
DROP TABLE 'delta.test_table'

删除表'delta / test_table'等其他选项都没有,等等...

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:1)

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

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

2。非托管-数据砖仅管理元数据,但数据不由数据砖管理。

因此,如果您为托管表编写一个删除查询,它也会删除该表并删除数据,但是对于非托管表,如果您编写一个删除查询,则只会删除符号链接指针(Meta-表的信息)到表的位置,但您的数据不会被删除,因此您需要使用rm命令从外部删除数据。

有关更多信息: https://docs.databricks.com/data/tables.html