使用Databricks Lakehouse平台,可以使用如下语句创建“表”或更具体的增量表,
DROP TABLE IF EXISTS People10M;
CREATE TABLE People10M
USING parquet
OPTIONS (
path "/mnt/training/dataframes/people-10m.parquet",
header "true"
);我想知道的是,当您创建这些表之一时,幕后到底发生了什么?在这种情况下,表究竟是什么?因为数据实际上包含在数据湖(数据存储位置)中的文件中,所以delta湖运行在..。对吗?表是否是某种抽象,允许我们使用类似SQL的方法访问存储在这些文件中的数据?
这个语句的USING parquet部分是做什么的?地板桌在某种程度上与CSV表有什么不同吗?还是这仅仅取决于源数据的格式?
任何与解释这一想法的材料的链接将不胜感激?我想从技术角度深入了解这一点。
发布于 2022-04-29 08:29:58
这里有几个方面。您的表定义不是Delta,而是定义表的Spark (或Hive)语法。它只是一种元数据,允许用户在不知道表的位置、数据格式等的情况下轻松地使用该表。您可以在数据库文档中阅读更多关于数据库和表的信息。
数据存储的实际格式由USING指令指定。在您的示例中,它是parquet,所以当人员或代码将读取或写入数据时,底层引擎将首先读取表元数据,确定数据和文件格式的位置,然后使用相应的代码。
Delta是另一种文件格式(实际上是存储层),它构建在Parquet之上作为数据格式,但是添加了额外的功能,如ACID、时间旅行等(参见文档)。如果您想使用Delta而不是Parquet,那么您需要使用转换为德尔塔将现有的Parquet数据转换为Delta,或者在创建一个全新的表时指定USING delta。
https://stackoverflow.com/questions/72049060
复制相似问题