你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
数据以各种格式到达 Data Lake 帐户。 这些格式包括人类可读格式,如 JSON。CSV 或 XML 文件以及压缩的二进制格式,例如.tar或.gz。 从几个已编辑的文件到整个 SQL 表的导出,到达数据也有多种大小。 数据也可能是大量小型文件,每个文件大小为几KB,比如来自物联网解决方案的实时事件。
虽然 Azure Data Lake Storage Gen2 支持对所有类型的数据的存储,但应仔细考虑数据格式,以确保处理管道效率并优化成本。
许多组织现在标准化其引入格式,并将计算与存储分开。 因此,Delta Lake 格式已成为将数据引入到扩充层的首选标准。 从扩充层,数据应用程序团队可以采用反映其用例的格式提供数据。
注释
使用 Delta Lake 支持批处理和流处理用例,涵盖从初始数据引入到丰富层的整个过程。
本文概述了 Delta Lake 及其性能,以及它如何帮助你实现合规性支持,以及如何在数据从源流向扩充层时标准化数据。
Delta Lake
Delta Lake 是一个开源存储层,它为大数据工作负载和 Apache Spark 带来了 ACID(原子性、一致性、隔离和持久性)事务。 Azure Databricks 与 Linux Foundation Delta Lake 兼容。
Delta Lake 主要功能
| 功能 / 特点 | DESCRIPTION |
|---|---|
| ACID 事务 | 数据湖通常通过多个进程和管道进行填充,其中一些进程和管道通过读取并发写入数据。 数据工程师以前需要完成手动而又容易出错的流程,才能在将 Delta Lake 和事务投入使用之前确保数据完整性。 Delta Lake 将常用的 ACID 事务引入数据湖。 它提供最强的隔离级别,可序列化性。 有关详细信息,请参阅深入了解 Delta Lake:解包事务日志。 |
| 可缩放的元数据处理 | 在大数据中,即使是元数据也可以是“大数据”。 Delta Lake 将元数据视为与其他数据相同。 它使用 Spark 的分布式处理能力来处理所有元数据。 因此,Delta Lake 可以轻松处理具有数十亿个分区和文件的 PB 级表。 |
| 按时间顺序查看(数据版本控制) | “撤消”更改或返回到以前版本的能力是事务的关键功能。 Delta Lake 提供数据快照,允许还原到较早版本的数据进行审核、回滚或重现实验。 若要了解详细信息,请参阅为大型数据湖引入“Delta Lake 按时间顺序查看”。 |
| 开放格式 | Apache Parquet 是 Delta Lake 的基线格式,可用于应用高效的压缩和编码方案。 |
| 统一的批处理和流式处理源和接收器 | Delta Lake 中的表既是批处理表,也是流式处理的源和接收器。 数据引入流式处理、批处理历史回填、交互式查询功能都是现成的。 |
| 架构强制 | 数据架构强制有助于确保数据类型正确并包含必需的列,从而防止因不良数据导致的数据不一致。 有关详细信息,请参阅深入了解 Delta Lake:架构强制与演变 |
| 架构演变 | Delta Lake 允许自动对表架构进行更改,而无需编写迁移 DDL。 有关详细信息,请参阅深入了解 Delta Lake:架构强制与演变 |
| 审核历史记录 | Delta Lake 事务日志记录有关对数据所做的每一项更改的详细信息。 这些记录提供所有更改的完整审核线索。 |
| 更新和删除 | Delta Lake 支持各种功能的 Scala、Java、Python 和 SQL API。 合并、更新和删除操作的支持帮助您满足合规性要求。 有关详细信息,请参阅 宣布 Delta Lake 0.6.1 版本、 宣布 Delta Lake 0.7 版本以及 使用 Python API 在 Delta Lake 表上执行简单、可靠更新和删除 作(其中包括合并、更新和删除 DML 命令的代码片段)。 |
| 100% 与 Apache Spark API 兼容 | 开发人员可以将 Delta Lake 与现有数据管道的最小更改一起使用,因为它与现有 Spark 实现完全兼容。 |
有关详细信息,请参阅 Delta Lake 项目。
有关完整的文档,请访问 Delta Lake 文档页面
性能
使用大量小文件通常会导致读取/列出操作增加,性能表现不佳,以及由于增加的读取/列出操作而导致成本更高。 Azure Data Lake Storage Gen2 针对较大的文件进行优化,使分析作业运行速度更快且成本更低。
Delta Lake 包含许多功能,可帮助你 通过文件管理优化性能。
示例包括:
- 事务日志尽量减少频繁的 LIST 操作。
- Z 排序(多维聚类分析)为查询筛选器启用优化谓词下推。
- 本机缓存和查询优化可减少所需的存储扫描量。 有关详细信息,请参阅 使用缓存优化性能。
- OPTIMIZE 将小文件合并为较大的文件。
使这些优化成为数据加载过程的一部分,以保持数据新鲜度和性能。
数据湖分区
数据分区涉及在数据存储中组织数据,以便可以管理大规模数据并控制数据访问。 分区可以改善可伸缩性、减少争用,以及优化性能。
对数据湖进行分区时,请确保您的设置:
- 不会危及安全性
- 具有明确的隔离性,并与数据授权模型保持一致
- 非常适合您的数据摄取过程
- 具有定义完善的路径以实现最佳数据访问
- 支持管理和维护任务
一般做法
数据分区设计的一般做法是:
- 请尽早关注安全隐患,并结合授权设计数据分区。
- 你可能希望允许数据冗余来换取安全性。- 定义命名约定并遵守它。
- 可以嵌套多个文件夹,但始终将它们保持一致。
- 在文件夹结构和文件名中包含时间元素。
- 不要以日期分区设计文件夹结构。 最好将日期保持在较低的文件夹级别。
- 不要在单个文件夹结构中合并混合文件格式或不同的数据产品。
小窍门
文件夹结构应具有可优化访问模式和适当文件大小的分区策略。 在精心策划的区域内,根据最佳检索效果设计结构,谨慎选择高基数的分区键,因为这会导致过度分区,从而导致文件大小不理想。
有关数据湖区域的详细信息,请参阅数据湖区域和容器
合规性支持
Delta Lake 添加了一个事务层,用于提供数据湖之上的结构化数据管理。 此添加可以极大地简化和加快用户根据消费者请求查找和删除个人信息(也称为“个人数据”)的能力。 事务层支持 DELETE、UPDATE 和 MERGE 等作。 有关详细信息,请参阅 最佳做法:使用 Delta Lake 的 GDPR 符合性。
概要
将本文中列出的数据标准化应用于平台。 从 Delta Lake 格式开始,然后开始添加优化和符合性的过程。 可以决定创建按计划运行某些优化路由的服务,或创建删除个人信息的符合性服务。