使用e Azure Synapse Link for Dataverse 以 Delta Lake 格式导出 Microsoft Dataverse 数据。 Delta Lake 是 Microsoft Fabric 以及许多其他工具(如 Azure Databricks)的本地格式。 从 Dataverse 直接导出 Delta Lake 格式的数据,无需单独进行 Delta Lake 转换过程,从而加快洞察时间。 本文提供有关此功能的信息,并介绍如何执行以下任务:
- 说明 Delta Lake 和 Parquet 以及为什么应该以此格式导出数据。
- 使用 Azure Synapse Link 将 Dataverse 数据以 Delta Lake 格式导出到 Azure Synapse Analytics 工作区。
- 监控 Azure Synapse Link 和数据转换。
- 在 Azure Data Lake Storage Gen2 中查看您的数据。
- 从 Synapse 工作区查看您的数据。
- 在 Microsoft Fabric 中查看数据。
什么是 Delta Lake?
Delta Lake 是一个开源项目,能够基于数据湖构建 Lakehouse 体系结构。 Delta Lake 提供 ACID(原子性、一致性、隔离和持久性)事务、可扩展的元数据处理,并在现有数据湖的基础上统一流式处理和批量数据处理。 Azure Synapse Analytics 与 Linux Foundation Delta Lake 兼容。 Azure Synapse 中包含的 Delta Lake 的当前版本支持 Scala、PySpark 和 .NET 语言。 详细信息:什么是 Delta Lake?。 您还可以从 Delta 表简介视频中了解更多信息。
Apache Parquet 是 Delta Lake 的基准格式,让您能够利用该格式固有的高效压缩和编码方案。 Parquet 文件格式使用逐列压缩。 它既高效又节省存储空间。 提取特定列值的查询不需要读取整行数据,从而提高了性能。 因此,无服务器 SQL 池需要更少的时间和更少的存储请求来读取数据。
为何使用 Delta Lake?
- 可扩展性:Delta Lake 是在开源 Apache 许可证的基础上构建的,该许可证用于满足处理大规模数据处理工作负荷的行业标准。
- 可靠性:Delta Lake 提供 ACID 事务,即使在出现故障或并发访问时也能确保数据的一致性和可靠性。
- 性能:Delta Lake 利用 Parquet 的列式存储格式,提供更好的压缩和编码技术,相比查询 CSV 文件,这可以提高查询性能。
- 成本效益:Delta Lake 文件格式是一种高度压缩的数据存储技术,让企业有可能节省大量的存储。 此格式专门设计用于优化数据处理,有可能减少按需计算所需的处理数据总量或运行时间。
- 数据保护合规:带有 Azure Synapse Link 的 Delta Lake 提供了包括软删除和硬删除在内的工具和功能,以帮助遵守各项数据隐私法规,包括“一般数据保护条例 (GDPR)”。
Delta Lake 如何与 Azure Synapse Link for Dataverse 配合使用?
设置 Azure Synapse Link for Dataverse 时,您可以启用导出到 Delta Lake 功能,并连接 Synapse 工作区和 Spark 池。 Azure Synapse Link 会在指定的时间间隔以 CSV 格式导出选定的 Dataverse 表,并通过 Delta Lake 转换 Spark 作业进行处理。 完成此转换过程后,将对 CSV 数据进行清理以节省存储。 此外,还将计划每天运行一系列维护作业,自动执行压缩和清除过程,以合并和清理数据文件,从而进一步优化存储,提高查询性能。
重要提示
- 如果您要使用现有自定义视图从 CSV 升级到 Delta Lake,建议更新脚本,将所有 partitioned 表替换为 non_partitioned。查找
_partitioned的实例并用空字符串替换。 - 对于 Dataverse 配置,默认启用仅追加,以在
appendonly模式下导出 CSV 数据。 Delta Lake 表将有一个就地更新结构,因为 Delta Lake 转换随附定期的合并流程。 - 您需要在自己的 Azure 订阅中为 Delta 转换配置一个 Spark 池(计算资源)。 此 Spark 池用于根据您选择的时间间隔执行定期 Delta 转换。
- 创建 Spark 池不会产生任何成本。 只有在目标 Spark 池上执行 Spark 作业以及根据需要实例化 Spark 实例后,才会产生费用。 这些成本与 Azure Synapse workspace Spark 的使用有关,按月计费。 执行 Spark 计算的成本主要取决于增量更新的时间间隔和数据量。 更多信息:Azure Synapse Analytics 定价
- 需要创建版本为 3.4 的 Spark 池。 如果您已经在 Spark 3.3 版本中使用此功能,则需要对现有配置文件执行就地升级。 详细信息:使用 Delta Lake 2.4 就地升级到 Apache Spark 3.4
备注
Power Apps (make.powerapps.com) 中的 Azure Synapse Link 状态反映了 Delta Lake 转换状态:
-
Count显示 Delta Lake 表中的记录数。 -
Last synchronized on日期/时间表示最后一次成功转换的时间戳。 - 在数据同步和 Delta Lake 转换完成后,
Sync status显示为活动,指示数据已可供使用。
先决条件
- Dataverse:您必须具有 Dataverse 系统管理员安全角色。 此外,要通过 Azure Synapse Link 导出的表必须启用跟踪更改属性。 详细信息:高级选项
- Azure Data Lake Storage Gen2:您必须有 Azure Data Lake Storage Gen2 帐户以及所有者和存储 Blob 数据参与者角色访问权限。 您的存储帐户必须为初始设置和增量同步启用分层命名空间和公用网络访问。仅初始设置需要允许存储帐户密钥访问。
- Synapse 工作区:您必须在 Synapse Studio 中有 Synapse 工作区和访问控制 (IAM) 中的负责人角色和 Synapse 管理员角色访问权限。 Synapse 工作区必须与 Azure Data Lake Storage Gen2 帐户位于同一区域。 存储帐户必须添加为 Synapse Studio 中的链接服务。 要创建 Synapse 工作区,请转到创建 Synapse 工作区。
- 使用此推荐的 Spark 池配置通过 Apache Spark 版本 3.4 相连的 Azure Synapse workspace 中的 Apache Spark 池。 有关如何创建 Spark 池的信息,请转到创建新的 Apache Spark 池。
- 使用此功能的 Microsoft Dynamics 365 最低版本要求为 9.2.22082。 详细信息:选择提前访问更新
推荐的 Spark 池配置
此配置可以被认为是平均用例的引导步骤。
- 节点大小:小 (4 vCores/32 GB)
- 自动缩放:启用
- 节点数量:3 到 10 个(如有需要,也可为 20 个。1更多信息见下文。)
- 自动暂停:启用
- 空闲分钟数:5
- Apache Spark:3.4
- 动态分配执行程序:已启用
- 默认执行程序数:1 到 9
重要提示
- 将 Spark 池专门用于 Delta Lake 会话操作,Synapse Link 用于 Dataverse。 若要获得最佳可靠性和性能,请避免使用同一 Spark 池运行其他 Spark 作业。
- 如果要处理大量行,则可能需要增加 Spark 池的节点数。 如果 Spark 池的大小不够,Delta 转换任务可能会失败
- 系统使用同一个 Spark 池来运行夜间作业,该作业在当地时间晚上 11 点至早上 6 点之间压缩湖中的增量文件。 系统会根据 Dataverse 环境的位置来确定运行该作业的夜间时间。 您无法提供特定的时间窗口。 该选项通过合并文件(称为“压缩”)来减小 Delta 文件的大小。在极少数情况下,这项工作可能会干扰增量转换工作。 您可以将节点数增加到 20 个,以防您发现这些故障。
- 您只需为实际使用的 Spark 池节点付费。 增加节点数可能不会导致更高的费用。
将 Dataverse 连接到 Synapse 工作区,并以 Delta Lake 格式导出数据
登录到 Power Apps,选择所需的环境。
在左侧导航窗格中,选择 Azure Synapse Link。 如果项目不在侧面板窗格中,请选择 …更多,然后选择所需项目。
在命令栏上选择 + 新建链接
选择连接到 Azure Synapse Analytics 工作区,然后选择订阅、资源组和工作区名称。
选择使用 Spark 池进行处理,然后选择预创建的 Spark 池和存储帐户。
选择下一步。
添加要导出的表,然后选择高级。
(可选)选择显示高级配置设置,输入捕获增量更新的频率间隔(以分钟为单位)。
选择保存。
监控 Azure Synapse Link 和数据转换
- 选择所需的 Azure Synapse Link,然后在命令栏上选择转到 Azure Synapse Analytics 工作区。
- 选择监视>Apache Spark 应用程序。 详细信息:使用 Synapse Studio 监视您的 Apache Spark 应用程序
从 Synapse 工作区查看您的数据
- 选择所需的 Azure Synapse Link,然后在命令栏上选择转到 Azure Synapse Analytics 工作区。
- 在左侧窗格中展开湖数据库,请选择 dataverse-environmentNameorganizationUniqueName,然后展开表。 所有 Parquet 表都将列出,可用于使用命名约定 DataverseTableName (Non_partitioned Table) 的分析。
备注
不要使用命名约定为 _partitioned 的表。 当您选择 Delta parquet 作为格式时,具有 _partition 命名约定的表用作暂存表,并在系统使用后被删除。
在 Azure Data Lake Storage Gen2 中查看您的数据
- 选择所需的 Azure Synapse Link,然后在命令栏上选择转到 Azure Data Lake。
- 选择数据存储下的容器。
- 选择 *dataverse- *environmentName-organizationUniqueName。 所有 Parquet 文件都存储在 deltalake 文件夹中。
使用 Delta Lake 2.4 就地升级到 Apache Spark 3.4
根据适用于 Apache Spark 的 Synapse 运行时生命周期政策,适用于 Apache Spark 3.3 的 Azure Synapse 运行时将于 2025 年 3 月 31 日停用并禁用。 在支持结束日期之后,停用的运行时将不适用于新的 Spark 池,并且将不会执行具有 Spark 3.3 池的现有工作流,而元数据将暂时保留在 Synapse 工作区中。 详细信息:适用于 Apache Spark 3.3 的 Azure Synapse 运行时 (EOSA)。
为了确保现有的 Synapse Link 配置文件继续处理数据,需要使用“就地升级过程”升级 Synapse Link 配置文件以使用 Spark 3.4 池。
就地升级先决条件
- 您必须有一个使用 Synapse Spark 版本 3.3 运行的现有 Azure Synapse Link for Dataverse Delta Lake 配置文件。
- 您必须使用 Spark 版本 3.4 创建新的 Synapse Spark 池,在同一 Synapse 工作区中使用相同或更高的节点硬件配置。 有关如何创建 Spark 池的信息,请转到创建新的 Apache Spark 池。 该 Spark 池的创建应独立于当前的 3.3 池 - 请勿删除 Spark 3.3 池或创建同名的 Spark 34 池
就地升级到 Spark 3.4
- 登录到 Power Apps,选择您的首选环境。
- 在左侧导航窗格中,选择 Azure Synapse Link。 如果项目不在左侧导航窗格中,请选择 …更多,然后选择所需项目。
- 打开 Azure Synapse Link 配置文件,然后选择使用 Delta Lake 2.4 升级到 Apache Spark 3.4。
- 从列表中选择可用的 Spark 池,然后选择更新。
备注
- 仅在触发新的 Delta Lake 转换 Spark 作业时,才会进行 Spark 池升级。 确保在选择更新后至少有一个数据更改。
- 在验证增量转换作业是否使用新池后,可以删除旧的 Spark 3.3 池。