Delta Lake Table 元数据

Delta Lake Table metadata

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

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

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

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