Delta Lake 表元数据

use*_*284 5 delta-lake

Delta Lake 在哪里存储表元数据信息。我在我的独立机器上使用 Spark 2.6(不是 Databricks)。我的假设是,如果我重新启动 Spark,在 Delta Lake Spark 中创建的表将被删除(从 Jupyter Notebook 尝试)。但事实并非如此。

zsx*_*ing 10

Apache Spark 中有两种类型的表:外部表和托管表。LOCATION当语句中使用关键字创建表时CREATE TABLE,该表就是外部表。否则,它是一个托管表,其位置位于 Spark SQL conf 指定的目录下spark.sql.warehouse.dir。它的默认值是spark-warehouse当前工作目录中的目录

除了数据之外,Spark还需要将表元数据存储到Hive Metastore中,以便当用户使用表名查询时Spark可以知道数据在哪里。Hive Metastore 通常是一个数据库。如果用户没有为 Hive Metastore 指定数据库,Spark 将使用名为Derby 的嵌入式数据库在本地文件系统上存储表元数据。

DROP TABLE根据表类型,命令具有不同的行为。当表是托管表时,DROP TABLE将从 Hive Metastore 中删除该表并删除数据。如果表是外部表,DROP TABLE将从 Hive Metastore 中删除该表,但仍将数据保留在文件系统上。因此,外部表的数据文件需要由用户手动从文件系统中删除。