delta-lake - Delta Lake Table 元数据
问题描述
Delta Lake 在哪里存储表元数据信息。我在我的独立机器上使用 spark 2.6(不是 Databricks)。我的假设是,如果我重新启动 spark,在 delta Lake spark 中创建的表将被删除(从 Jupyter notebook 尝试)。但事实并非如此。
解决方案
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 中删除该表,但仍将数据保留在文件系统上。因此,外部表的数据文件需要用户手动从文件系统中删除。
推荐阅读
- django - 如何在 pythonanywhere 上恢复 postgress 数据库
- java - 如何将容器向下滚动到某个精确坐标
- sql - 使用 CTE 时出现无效的列名错误?
- flutter - 按钮栏小部件在按下时更改按钮的颜色
- sql - 选择包含来自另一个单元格的值的查询,该单元格在字符串中具有 '
- node.js - 在 React Native 中发送自动短信
- javascript - Discord.py 语法错误(Discord Bot Javascript)
- reactjs - 如何使用 TSX 转换此样式组件代码?
- python - 在 SQL 查询 (sqlite3) 中使用 tkinter OptionMenu 变量?Python
- google-apps-script - 是否可以通过脚本将单元格插入到 Google 表格中的另一张工作表中