使用 ADF 和 Databricks 的层概念最佳实践
Best practice for layer concept with ADF and Databricks
我想使用 Azure 数据工厂和 Databricks 构建类似数据仓库的层概念,例如摄取层、传播层和数据集市层。这个想法是为每一层转换等创建单独的 Databricks 脚本,然后在 ADF 管道中编排所有这些。
然而,接下来的挑战是如何为每个步骤编排数据加载 from/to Databricks,尤其是处理 databricks 内存数据模型,以及为每一层移交持久存储(例如 Azure SQLDB)。如果我需要为每一层处理将所有内容再次加载到 Databricks,这将导致大量 I/O 开销和缓慢的处理时间。但是,如果我改为将所有内容保留在 Databricks 中直到最后一层进行处理,那么将很难从 ADF 中跟踪管道错误,并重新处理特定层。
我正在寻找如何使用 ADF 和 Databricks、关键设计原则或类似内容处理层概念的最佳实践。
提前致谢!
如果您要构建 Lakehouse 架构(Delta Lake Architecture),您应该有一个 Data Lake Storage Gen 2 资源来存储所有数据(最好是 parquet 格式)。第一次摄取将是原始数据(铜牌区)。第二个将有更多 refined/filtered 的数据视图(银区)。最后,第三个将提供业务级聚合,这些聚合将用于报告和仪表板(黄金区)。
对于您的流程,您应该首先使用 Azure 数据工厂连接到您的数据源并将原始数据加载到您的 Data Lake Storage 容器中(在您的 ADF 管道中复制 activity)。然后,您将 refine/transform 使用 Azure Databricks 和 Delta Lake 将您的数据放入 Bronze、Silver 和 Gold 表中。
链接:
我想使用 Azure 数据工厂和 Databricks 构建类似数据仓库的层概念,例如摄取层、传播层和数据集市层。这个想法是为每一层转换等创建单独的 Databricks 脚本,然后在 ADF 管道中编排所有这些。 然而,接下来的挑战是如何为每个步骤编排数据加载 from/to Databricks,尤其是处理 databricks 内存数据模型,以及为每一层移交持久存储(例如 Azure SQLDB)。如果我需要为每一层处理将所有内容再次加载到 Databricks,这将导致大量 I/O 开销和缓慢的处理时间。但是,如果我改为将所有内容保留在 Databricks 中直到最后一层进行处理,那么将很难从 ADF 中跟踪管道错误,并重新处理特定层。
我正在寻找如何使用 ADF 和 Databricks、关键设计原则或类似内容处理层概念的最佳实践。 提前致谢!
如果您要构建 Lakehouse 架构(Delta Lake Architecture),您应该有一个 Data Lake Storage Gen 2 资源来存储所有数据(最好是 parquet 格式)。第一次摄取将是原始数据(铜牌区)。第二个将有更多 refined/filtered 的数据视图(银区)。最后,第三个将提供业务级聚合,这些聚合将用于报告和仪表板(黄金区)。
对于您的流程,您应该首先使用 Azure 数据工厂连接到您的数据源并将原始数据加载到您的 Data Lake Storage 容器中(在您的 ADF 管道中复制 activity)。然后,您将 refine/transform 使用 Azure Databricks 和 Delta Lake 将您的数据放入 Bronze、Silver 和 Gold 表中。
链接: