如何从 Airflow 获取世系到 Microsoft Purview (预览版)

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

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

重要

此功能目前处于预览阶段。 Microsoft Azure 预览版的补充使用条款包括适用于 Beta 版、预览版或其他尚未正式发布的 Azure 功能的其他法律条款。

支持的功能

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

Microsoft当 Airflow 中使用以下类型的数据源时,Purview 支持元数据和世系收集:

  • Amazon RDS for PostgreSQL
  • Azure Database for PostgreSQL
  • Google BigQuery
  • PostgreSQL
  • Snowflake

将捕获以下 Airflow 元数据:

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

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

已知限制

  • 目前不支持列级世系。 捕获数据资产的架构。
  • 如果在任务中引用了数据库视图,则它们当前将捕获为表资产。
  • 所有元数据都引入到 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”。

    在 Azure 事件中心 中创建新事件中心的屏幕截图

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

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

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

摘要:

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

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

    配置事件中心以将消息发布到 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}从事件中心命名空间 ->主机名获取 :

      从事件中心命名空间获取主机名的屏幕截图

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

      获取事件中心连接字符串密钥的屏幕截图

  2. 重启 Airflow 服务器。

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

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

浏览 Airflow 资产:

按源类型浏览数据目录的屏幕截图

浏览 Airflow 源以查看详细信息的屏幕截图

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

查看 Airflow 任务资产上的 Airflow 世系详细信息的屏幕截图

疑难解答提示

如果运行 Airflow 作业,但未在 Microsoft Purview 中看到相应的资产/世系:

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

后续步骤