如何将 Airflow 中的世系引入到 Microsoft Purview(预览版)

Airflow 是一个开源的工作流自动化和日程安排平台,可用于创建和管理数据管道。 Microsoft Purview 支持通过与 OpenLineage(用于数据世系收集和分析的开放框架)集成来收集 Airflow 世系。 点击此处了解 Airflow 如何与 OpenLineage 配合使用。

在 Airflow 中启用 OpenLineage 会自动跟踪执行 DAG 时有关作业和数据集的元数据和世系。 此信息将发送到你配置的 Azure 事件中心。 Microsoft Purview 会订阅事件,对其进行分析并引入数据映射。

重要

此功能目前以预览版提供。 Azure 预览版的补充使用条款包含适用于 beta 版、预览版或其他尚未正式发布的 Azure 功能的其他法律条款。

支持的功能

支持的 Airflow 版本为 1.10+ 和 2.0-2.7。

将一起捕获以下 Airflow 元数据:

  • Airflow 工作区
  • Airflow DAG
  • Airflow 任务

成功以基于事件的方式运行 DAG 后,世系将收集到 Microsoft Purview 中。

已知限制

  • 目前不支持列级世系。 捕获数据资产的架构。
  • 如果任务中引用了数据库视图,则目前会被作为表资产捕获。
  • 所有元数据都引入到 Microsoft Purview 根集合中。 数据映射中已存在的资产将保留在配置的集合中。

如何将 Airflow 世系引入 Microsoft Purview

作为先决条件,需要正在运行的 Airflow 实例。

若要将 Airflow 中的世系引入到 Microsoft Purview,需要执行以下操作:

  1. 设置 Azure 事件中心
  2. 配置事件中心以将消息发布到 Microsoft Purview
  3. 使用 OpenLineage 配置 Airflow
  4. 运行 Airflow 作业并查看资产/世系

设置 Azure 事件中心

将 Azure 事件中心设置为 Airflow 中 OpenLineage 跟踪的元数据和世系的接收者。

  1. 创建一个 Azure 事件中心命名空间

  2. 创建事件中心。 将事件中心命名为“microsoft_internal_openlineage”。

    Screenshot of create an new event hub in Azure Event Hubs

  3. 转到“microsoft_internal_openlineage”事件中心 ->访问控制 (IAM) ->添加角色分配,将“Azure 事件中心数据接收者”角色分配给 Microsoft Purview 帐户的托管标识。 有关详细步骤,请参阅使用 Azure 门户分配 Azure 角色

配置事件中心以将消息发布到 Microsoft Purview

Microsoft Purview 支持从/向自己的事件中心使用和推送事件。 按照此文档为 Microsoft Purview 配置事件中心:将 Microsoft Purview 的事件中心配置为发送和接收 Atlas Kafka 主题消息

综上所述:

  • 转到 Microsoft Purview 帐户 -> 托管资源选项卡,禁用托管的事件中心命名空间。

  • 转到 Kafka 配置选项卡 ->+添加配置 ->挂钩配置,输入名称,然后选择“事件中心”命名空间以及在上一步中创建的“事件中心”。

    Screenshot of configure Event Hubs to publish messages to Microsoft Purview

使用 OpenLineage 配置 Airflow

安装:

若要下载并安装最新的“openlineage-airflow”库,请更新正在运行的 Airflow 实例的“requirements.txt”文件:

openlineage-airflow

注意

Airflow 版本和 openlineage-airflow 版本需要匹配。 例如,使用 Airflow 2.7.1 时,可以使用 openlineage-airflow 版本 1.1.0 或 1.2.0。 可以访问此网站查看匹配的版本。

配置:

接下来,将 Azure 事件中心实例配置为 OpenLineage 将事件发送到的目标。

  1. 在 Airflow 根路径下创建“openlineage.yml”文件。 文件内容如下所示:

    transport:
      type: "kafka"
      config:
        bootstrap.servers: "{EVENTHUB_SERVER}:9093"
        security.protocol: "SASL_SSL"
        sasl.mechanism: "PLAIN"
        sasl.username: "$ConnectionString"
        sasl.password: "{PASSWORD}"
        client.id: "airflow-client"
      topic: "microsoft_internal_openlineage"
      flash: True
    

    将两个占位符替换为值:

    • 从事件中心命名空间获取 {EVENTHUB_SERVER} ->主机名

      Screenshot of Get host name from Event Hubs namespace

    • 从事件中心命名空间获取 {PASSWORD} ->共享的访问策略 ->连接字符串 - 主要密钥连接字符 - 辅助密钥

      Screenshot of Get event hub connection string key

  2. 重启 Airflow 服务器。

运行 Airflow 作业并查看资产/世系

现在可以运行 Airflow 作业,然后转到 Microsoft Purview 治理门户浏览/搜索/查看资产。 资产应在成功运行 DAG 后不久显示。

浏览 Airflow 资产:

Screenshot of Browse data catalog by source type

Screenshot of Browse Airflow source to see details

使用世系查看 Airflow 任务资产详细信息:

Screenshot of View Airflow lineage details on Airflow task asset

故障排除提示

如果运行 Airflow 作业,但看不到 Microsoft Purview 中显示的相应资产/世系,请执行以下操作:

  • 检查你的 Airflow 用例是否受 Microsoft Purview 支持。 请参阅支持的功能部分。
  • 转到事件中心实例,检查是否有任何传入的请求和消息。 如果没有,请在 Airflow 中仔细检查 OpenLineage 配置。

后续步骤