閱讀英文

共用方式為

Azure Databricks 中的过程与声明性数据处理

本文介绍过程编程和声明性编程及其在 Databricks 中的用法之间的差异。

过程和声明性编程是计算机科学中的两种基本编程范例。 每个方法都表示一种不同的构造和执行指令的方法。

  • 使用过程编程,可以通过定义显式作序列来指定任务应如何完成。
  • 声明性编程侧重于需要实现的内容,使基础系统能够确定执行任务的最佳方法。

设计数据管道时,工程师必须在过程和声明性数据处理模型之间进行选择。 此决策会影响工作流复杂性、可维护性和效率。 本页介绍这些模型的主要差异、优点和挑战,以及何时使用每种方法。

什么是过程数据处理?

过程数据处理遵循结构化方法,其中定义了处理数据的显式步骤。 此模型与命令性编程密切相关,强调一个命令序列,该序列指示应如何处理数据。

过程处理的特征

以下是过程处理的特征:

  • 分步执行:开发人员明确地定义操作顺序。
  • 使用控制结构:循环、条件和函数管理执行流。
  • 详细资源控制:启用精细优化和手动性能调节。
  • 相关概念:过程编程是命令性编程的子类。

过程处理的常见用例

下面是过程处理的日常用例:

  • 需要过程逻辑的自定义 ETL 管道。
  • 批量和流式处理工作流中的低级别性能优化。
  • 旧系统或现有命令性脚本。

使用 Apache Spark 和 Databricks 作业进行过程处理

Apache Spark 主要遵循用于数据处理的过程模型。 使用 Databricks 作业添加显式执行逻辑,以定义分布式数据的分步转换和操作。

什么是声明性数据处理?

声明性数据处理抽象化了定义所需结果的方式和重点。 开发人员无需指定分步说明,而是定义转换逻辑,系统确定最有效的执行计划。

声明性处理的特征

以下是声明性处理的特征:

  • 执行详细信息的抽象:用户描述所需的结果,而不是实现它的步骤。
  • 自动优化:系统应用查询规划和执行优化。
  • 降低复杂性:无需显式控制结构,从而提高可维护性。
  • 相关概念:声明性编程包括特定于域和功能编程范例。

声明性处理的常见用例

下面是声明性处理的常见用例:

  • 批处理和流式处理工作流中基于 SQL 的转换。
  • 高级数据处理框架,如 DLT。
  • 需要自动优化的可缩放分布式数据工作负荷。

使用 DLT 进行声明性处理

DLT 是一个声明性框架,旨在简化可靠且可维护的流处理管道的创建。 通过指定要引入的数据以及如何转换数据,DLT 可自动执行管道管理的关键方面,包括业务流程、计算管理、监视、数据质量强制和错误处理。

主要区别:过程处理与声明性处理

方面 过程处理 声明性处理
控制 对执行的完全控制 由系统执行
复杂性 可能会复杂且冗长 一般更简单、更简洁
优化 需要手动调节 系统处理优化
灵活性 高,但需要专业知识 较低,但更易于使用
用例 自定义管道,性能优化 SQL 查询、托管管道

何时选择过程处理或声明性处理

下表概述了过程和声明性处理的某些关键决策点:

过程处理 声明性处理
需要对执行逻辑进行精细控制。 简化的开发和维护是优先事项。
转换涉及难以以声明方式表达的复杂业务规则。 基于 SQL 的转换或托管工作流无需过程控制。
性能优化需要手动优化。 DLT 等数据处理框架提供内置优化。