你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

数据标准化

数据以各种格式传入数据湖帐户。 这些格式包括用户可读的格式(例如 JSON、.CSV 或 XML 文件),以及压缩的二进制格式(例如 .tar 或 .gz)。 传入的数据还具有多种大小,从少量几个已编辑的文件到整个 SQL 表的导出。 数据的形式还可能是大量小文件,其中每个文件只有几 KB,例如来自 IoT 解决方案的实时事件。

虽然 Azure Data Lake Storage Gen2 确实支持无限制地存储各种数据,但你应该仔细考虑数据格式,以确保处理管道的效率并优化成本。

当今许多组织标准化了其引入格式,并将计算与存储分离。 正因如此,Delta Lake 格式已成为将数据引入到扩充层的首选标准。 在扩充层中,数据应用程序团队能够以一种反映数据用例的格式提供数据。

注意

使用 Delta Lake 来支持最初将数据引入到扩充层的批处理和流式处理用例。

本文概述了 Delta Lake、其性能、它如何帮助实现合规性支持,以及如何在数据从源流向扩充层时将其标准化。

Delta Lake

Delta Lake 是开源存储层,可将 ACID(原子性、一致性、隔离性和持续性)事务引入大数据工作负载和 Apache Spark。 Azure Synapse Analytics 和 Azure Databricks 都与 Linux Foundation Delta Lake 兼容。

Delta Lake 关键功能

Feature 说明
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 命令的代码片段)。
与 Apache Spark API 兼容 100% 由于 Delta Lake 与现有的 Spark 实现完全兼容,因此开发人员只需进行最低限度的更改即可将其与现有数据管道结合使用。

有关详细信息,请参阅 Delta Lake 项目

有关完整文档,请访问 Delta Lake 文档页

性能

使用大量小文件通常会导致性能欠佳,并因读取/列出操作数量增加而导致成本更高。 Azure Data Lake Storage Gen2 针对较大的文件进行了优化,使分析作业能够以更低的成本、更快的速度运行。

Delta Lake 包含许多可帮助你通过文件管理优化性能的功能。

示例包括:

  • 事务日志最大程度地减少了高开销的 LIST 操作。
  • Z 排序(多维聚类)为查询筛选器启用优化的谓词下推。
  • 本机缓存和查询优化减少了所需的存储扫描量。 有关详细信息,请参阅使用缓存优化性能
  • “优化”将小文件联合成更大的文件。

请将这些优化作为数据加载过程的一部分,以保持数据的新鲜度和性能。

数据湖分区

数据分区涉及到组织数据存储中的数据,以便可以管理大规模数据和控制数据访问。 分区可以改善可伸缩性、减少争用,以及优化性能。

对数据湖进行分区时,请确保你的设置:

  • 不会损害安全性
  • 具有明确的隔离,并与数据授权模型保持一致
  • 非常适合数据引入过程
  • 具有定义明确的路径,以实现最佳数据访问
  • 支持管理和维护任务

一般做法

数据分区设计的一般做法如下:

  • 尽早关注安全隐患,并结合授权设计数据分区。
  • 你可能想要允许数据冗余以换取安全性。- 定义命名约定并遵循该约定。
  • 可以嵌套多个文件夹,但应始终使其保持一致。
  • 在文件夹结构和文件名中包含时间元素。
  • 不要在文件夹结构的开头使用日期分区。 最好将日期保存在较低的文件夹级别。
  • 不要在单个文件夹结构中组合混合文件格式或不同的数据产品。

提示

文件夹结构应具有可以优化访问模式和适当文件大小的分区策略。 在特选区域中,根据最佳检索规划结构,谨慎选择基数较高的分区键,这会导致分区过度,进而导致文件大小不够理想。

有关数据湖区域的详细信息,请参阅数据湖区域和容器

合规性支持

Delta Lake 添加了一个事务层,以便在数据湖之上提供结构化数据管理。 此层大幅简化了根据使用者请求查找和删除个人信息(也称为“个人数据”)的操作并加快了此类操作的速度。 事务层支持 DELETE、UPDATE 和 MERGE 等操作。 有关详细信息,请参阅最佳做法:使用 Delta Lake 实现 GDPR 合规性

总结

将本文中列出的数据标准化应用于你的平台。 从 Delta Lake 格式开始,然后添加优化与合规性流程。 可以创建一个按计划运行某些优化路由的服务,或者创建一个可删除个人信息的合规性服务。

后续步骤