【问题标题】:Best practice for layer concept with ADF and Databricks使用 ADF 和 Databricks 实现层概念的最佳实践
【发布时间】:2021-11-13 17:08:48
【问题描述】:

我想使用 Azure 数据工厂和 Databricks 构建类似于数据仓库的层概念,例如摄取层、传播层和数据集市层。这个想法是为每个层转换等创建单独的 Databricks 脚本,然后在 ADF 管道中编排所有这些。 然而,挑战在于如何为每个步骤编排从/到 Databricks 的数据加载,特别是处理内存中的数据块数据模型,以及为每一层(例如,到 Azure SQLDB)切换到持久存储。如果我需要为每一层处理再次将所有内容加载到 Databricks,这将导致大量 I/O 开销和处理时间变慢。但是,如果我将所有内容都保留在 Databricks 中,直到最后一层进行处理,则很难从 ADF 中跟踪管道错误并重新处理特定层。

我正在寻找如何使用 ADF 和 Databricks、关键设计原则或类似方法处理层概念的最佳实践。 提前致谢!

【问题讨论】:

    标签: azure-data-factory azure-databricks


    【解决方案1】:

    如果您要构建 Lakehouse 架构(Delta Lake 架构),您应该有一个 Data Lake Storage Gen 2 资源来存储您的所有数据(最好是拼花格式)。第一次摄取将是原始数据(青铜区域)。第二个将具有更精细/过滤的数据视图(银区)。最后,第三个将提供将用于报告和仪表板的业务级别聚合(黄金区)。

    对于您的流程,您应该首先使用 Azure 数据工厂连接到您的数据源并将原始数据加载到您的 Data Lake Storage 容器中(在您的 ADF 管道中复制活动)。然后,您将使用 Azure Databricks 和 Delta Lake 将数据细化/转换为青铜、白银和黄金表。

    链接:

    【讨论】:

    • 嗨,Nadine,感谢您的出色回答,这澄清了很多。但是,我的业务转换非常复杂,因此我需要在 Bronze 和 Silver 之间添加一些额外的子层,包括用于重新处理、数据验证等的脚本。如果我需要为每个子层写回 delta Lake 或从 delta Lake 读取它,这个会使 E2E 处理非常缓慢。所以我需要一些机制来将数据保存在 Databricks 中,但允许在单独的 ADF 管道中进行处理。是否也有这方面的最佳做法?
    • Delta Lake 在现有 Azure Data Lake Storage Gen2 资源之上运行。您可以提高查询速度,以优化存储在云存储中的数据的布局。支持两种布局算法:bin-packing 和 Z-Ordering。链接:docs.microsoft.com/en-us/azure/databricks/delta/optimizations/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-29
    • 1970-01-01
    • 2011-01-04
    • 2010-09-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多