Databricks Delta Lake 了解下?

Databricks Delta Lake 了解下?,第1张

create a table

Partition data

Read a table

Delta Lake 时间旅行允许您查询 Delta Lake 表的旧快照。时间旅行有很多用例,包括:

DataFrameReader options 允许从 Delta Lake 表创建一个DataFrame 关联到表的特定版本,可以使用如下两种方式:

对于timestamp_string,仅接受日期或时间戳字符串。例如, 2019-01-01 和 2019-01-01 00:00:00.000Z

使用 Append 模式,可以自动将新数据追加到现有 Delta Lake 表:

要以原子方式替换表中的所有数据,可以使用 overwrite 模式:

您可以选择性地仅覆盖分区列上的谓词匹配的数据。如下以原子方式将1月份替换为df中的数据:

Delta Lake 可以自动更新表的 schema,作为 DML 事务的一部分,并使 schema 与正在写入的数据兼容

当以下任意情况为 true 时,DataFrame 中存在但表中缺少的列将自动添加为写入事务的一部分:

写入 Delta 时,会从 DataFrame 中删除 NullType 列(因为 Parquet 不支持 NullType)。当收到该列的不同数据类型时,Delta Lake 会将 schema 合并到新数据类型

默认情况下,覆盖表中的数据不会覆盖 schema。 使用模式 overwrite 覆盖表而不使用 replaceWhere 时,可能仍希望覆盖正在写入的数据的 schema。 可以通过设置以下内容来选择替换表的 schema :

Delta Lake 支持在 Delta Lake 表上创建视图,就像使用 data source 表一样。

使用视图 *** 作时的核心挑战是解析 schema。 如果更改 Delta Lake 表 schema。 例如,如果向 Delta Lake表添加新列,则必须确保此列在该基表之上构建的相应视图中可用。

Delta Lake 在读写之间提供 ACID 事务保证。 这意味着:

Delta Lake 使用乐观并发控制在写入之间提供事务保证。在这种机制下,写 *** 作分三个阶段进行:

INSERT OVERWRITE TABLE 分区表时分三种场景:

如果想通过 SQL 转化为上述 API ,首先需要在 sql parser 的时候获取到 insertMode 和 partitions 信息,并将 partitions 信息存在一个有序的结构中,例如 LinkedHashMap。然后利用这些信息,就可以拼装进行拼装实现上述三种场景。

对所有 ds 分区进行覆盖写 *** 作,将会清空所有 ds 分区

sql

Delta Lake API

对 ds=20200101 的分区进行覆盖写 *** 作,如果数据中没有分区字段,需要使用 withColumn 增加相应数据。

sql

Delta Lake API

tips: Delta 不能直接将数据写入分区目录,因为所有的 _Delta_Log 都存在表的根目录下。

对 ds=20200101 中的所有 event 的分区进行覆盖写 *** 作,将会清空所有 event 分区

sql

Delta Lake API

数据湖就是一个集中存储数据库,用于存储所有结构化和非结构化数据。数据湖可用其原生格式存储任何类型的数据,这是没有大小限制。

数据仓库是位于多个数据库上的大容量存储库。它的作用是存储大量的结构化数据,并能进行频繁和可重复的分析。

数据科学家

可能会用具有预测建模和统计分析等功能的高级分析工具。而数据仓库就是数据仓库非常适用于月度报告等 *** 作用途,因为它具有高度结构化。在架构中数据湖通常,在存储数据之后定义架构。使用较少的初始工作并提供更大的灵活性。

在数据仓库中存储数据之前定义架构。这需要你清理和规范化数据,这意味着架构的灵活性要低不少。

其实数据仓库和数据湖是我们都需要的地方,数据仓库非常适用于业务实践中常见的可重复报告。当我们执行不太直接的分析时,数据湖就很有用。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/bake/11427156.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-16
下一篇2023-05-16

发表评论

登录后才能评论

评论列表(0条)

    保存