首页 > 解决方案 > Delta Lake Table 元数据

问题描述

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

标签: delta-lake

解决方案


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 中删除该表,但仍将数据保留在文件系统上。因此,外部表的数据文件需要用户手动从文件系统中删除。


推荐阅读