在 Delta Lake 中创建 Delta Table 时会发生什么?

What Happens When a Delta Table is Created in Delta Lake?

使用 Databricks Lakehouse 平台,可以创建 'tables' 或更具体地说,使用如下语句创建增量 tables,

DROP TABLE IF EXISTS People10M;
CREATE TABLE People10M
USING parquet
OPTIONS (
  path "/mnt/training/dataframes/people-10m.parquet",
  header "true"
);

我想知道的是,当您创建这些 table 之一时,幕后到底发生了什么?在这种情况下 table 到底是什么?因为数据实际上包含在数据湖(数据存储位置)中的文件中,Delta Lake 位于 运行 之上……对吗? table 是某种抽象,允许我们使用 SQL 之类的东西访问存储在这些文件中的数据吗?

此语句的 USING parquet 部分有何作用? parquet tables 在某些方面与 CSV tables 不同吗?还是这仅取决于源数据的格式?

任何指向 material 的链接都可以解释这个想法,我们将不胜感激?我想从技术角度深入理解这个。

这里有几个方面。您的 table 定义不是 Delta Lake,它是 Spark SQL(或 Hive)语法来定义 table。它只是一个元数据,允许用户轻松使用 table,而无需知道它的位置、数据格式等。您可以在 Databricks documentation.[=15 中阅读有关数据库和 table 的更多信息=]

数据存储的实际格式由USING指令指定。在你的情况下它是 parquet,所以当人们或代码将读取或写入数据时,底层引擎将首先读取 table 元数据,找出数据和文件格式的位置,然后将使用相应的代码。

Delta 是另一种文件格式(实际上是一个存储层),作为数据格式建立在 Parquet 之上,但添加了额外的功能,如 ACID、时间旅行等(参见 doc). If you want to use Delta instead of Parquet then you either need to use CONVERT TO DELTA 转换将现有的 Parquet 数据转换为 Delta,或者在创建全新的 table.

时指定 USING delta