当前位置: 首页 > 知识库问答 >
问题:

Databricks是否删除delta表?

西门威
2023-03-14

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

并将其保存在增量表中

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

然后,如果我尝试删除它……这是不可能的删除表或类似的行动

%SQL
DROP TABLE 'delta.test_table'

其他选项,如删除表“增量/测试表”等...

共有3个答案

赫连华皓
2023-03-14

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

1.托管 - Spark同时管理数据和元数据的表,数据砖将元数据和数据存储在您账户的DBFS中。

2.非托管数据块仅管理元数据,但数据不由数据块管理。

因此,如果您为托管表编写drop查询,它将删除该表并删除数据,但是在非托管表的情况下,如果您编写drop查询,它将简单地删除指向表位置的符号链接指针(表的元信息),但不会删除您的数据,因此您需要使用rm命令从外部删除数据。

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

黎奇略
2023-03-14

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

%sql
DROP TABLE IF EXISTS <database>.<table>
禄仲渊
2023-03-14

如果您想完全删除该表,那么可以使用dbutils命令:

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

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

 类似资料:
  • 我最近开始发现Databricks,并面临需要删除增量表的某个列的情况。当我使用后格雷SQL时,它就像 我正在浏览有关删除的数据砖文档,但它仅涵盖。 我还找到了关于DROP数据库、DROP函数和DROP表的文档,但对于如何从delta表中删除列却一无所知。我在这里错过了什么?是否有标准的方法从delta表中删除列?

  • 我正在使用Databricks Delta Live表,但是在向上插入一些表时遇到了一些问题。我知道下面的文字很长,但我还是尽可能清晰地描述了我的问题。如果有些部分不清楚,请告诉我。 我有下面的表格和流程: 着陆区(_Z)- 要从着陆区转到原始表,我有以下Pysark代码: 此代码按预期方式工作。我运行它,添加更改。JSON文件到登陆区域,重新运行管道,更新插入正确应用于“raw_table” (

  • 在我决定问它之前,我通过编程搜索了一些去除色调的颜色,但它被标记为重复,所以我不知道这是否也是重复的?因为它没有回答我的问题,我想。 因为我还在问是否可以在更改后重置或删除的色调。 这是正常图像 这是选定的图像 这是取消选择图像后再次出现的正常图像 这是我的代码。 我还尝试了但图像变白或消失。我还尝试了,但图像什么也不做,变成最后一个图像。 我正在使用材料设计图标。 我想将图像恢复为正常的,正如您

  • 问题内容: 我知道该ValueEventListener线程在新线程中运行,是否应该在任何时间删除此线程以进行适当的线程管理?(例如,没有太多并行运行的线程)。如果是,该怎么办? 问题答案: 在谈论监听器时,是的,您需要根据活动的生命周期将其删除,为此,您需要使用以下代码行: 请记住,如果不这样做,最终将浪费您的电池和带宽。所以: 如果已在中添加了侦听器,则onStart必须在中将其删除onSto

  • 问题内容: 这在Microsoft SQL Server的T-SQL上是有效的语法,但在SQLite中则无效,在SQLite中是否有相同的替代语法? 问题答案: 通常,将整个联接移到一个子查询中,该子查询查找要删除的行的主键: 如果您有复合主键,则可以使用rowid代替: 如果您有复合主键,并且将该表创建为WITHOUT ROWID 表,则必须将联接重写为相关子查询:

  • 我已经使用了一段时间,但我遇到了一个错误,其中JSoup自动删除"表"元素,找不到任何解决方案... 如果你导航到这段代码中的链接,你可以看到有多个元素“表”(例如:在“Saison 01(VF)”下,有22个包含“Episode x”的表元素),但是它们在JSOUP输出中不存在... 我试图用一个简单的获取文档,打印它(表元素在那里),用Jsoup解析它,重新打印(表元素不见了),所以我知道这不