我正在尝试删除使用 writestream 创建的 delta 湖表。我尝试了删除表,但失败了
#table created as
df.writestream().outputmode("append").format("delta").start("/mnt/mytable")
#attempt to drop table
spark.sql("drop table '/mnt/mytable'")
我正在尝试删除使用 writestream 创建的 delta 湖表。我尝试了删除表,但失败了
#table created as
df.writestream().outputmode("append").format("delta").start("/mnt/mytable")
#attempt to drop table
spark.sql("drop table '/mnt/mytable'")
DROP TABLE IF EXISTS <unmanaged-table> // deletes the metadata
dbutils.fs.rm("<your-s3-path>", true) // deletes the data
DROP TABLE <managed-table> // deletes the metadata and the data
您需要指定数据以删除非托管表中的数据,因为使用非托管表;Spark SQL 只管理元数据,您控制数据位置。使用托管表,Spark SQL 管理元数据和数据,数据存储在您帐户的 Databricks 文件系统 (DBFS) 中。因此,要删除非托管表的数据,您需要指定数据的路径。
确保您的架构正确,因为即使您删除表,数据仍将驻留在 DDL 中定义的路径中。因此,如果您重新运行,它将推断出过去的模式。在这种情况下,您可能想使用%fs ls /mnt/data/blah/blah/blah删除文件或对其进行可视化,如果您知道使用%fs rm -r /mnt/data/在做什么,则删除它们那/废话/路径/这里。