【问题标题】:how to delete unmanaged delta lake table如何删除非托管三角洲湖表
【发布时间】:2019-08-21 21:12:17
【问题描述】:

我正在尝试删除使用 writestream 创建的 delta Lake 表。我试过删除表,但失败了

#table created as
df.writestream().outputmode("append").format("delta").start("/mnt/mytable")

#attempt to drop table
spark.sql("drop table '/mnt/mytable'")

【问题讨论】:

    标签: databricks azure-databricks delta-lake


    【解决方案1】:
    DROP TABLE IF EXISTS <unmanaged-table>    // deletes the metadata
    dbutils.fs.rm("<your-s3-path>", true)   // deletes the data
    

    DROP TABLE &lt;managed-table&gt; // deletes the metadata and the data

    您需要指定要删除非托管表中的数据的数据,因为使用的是非托管表; Spark SQL 只管理元数据,您控制数据位置。使用托管表,Spark SQL 管理元数据和数据,数据存储在您帐户的 Databricks 文件系统 (DBFS) 中。因此,要删除非托管表的数据,您需要指定数据的路径。

    【讨论】:

    • 在我将“True”大写之前出现错误。为可能遇到此问题的其他人发帖。
    【解决方案2】:

    确保您的架构正确,因为即使您删除表,数据仍将驻留在 DDL 中定义的路径中。因此,如果您重新运行,它将推断出过去的模式。在这种情况下,您可能想使用 %fs ls /mnt/data/blah/blah/blah 删除文件或在文件上显示视觉效果,如果您知道自己在做什么,请使用 删除它们%fs rm -r /mnt/data/that/blah/path/here .

    【讨论】:

    • 感谢回复,但如何删除表的表/元数据?删除表不起作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-03
    相关资源
    最近更新 更多