如何将数据沿袭从 Airflow 导入 Microsoft Purview(预览版)

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

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

Important

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

支持的功能

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

在 Airflow 中使用以下类型的数据源时,Microsoft Purview 支持元数据和沿袭收集:

  • Amazon RDS for PostgreSQL
  • Azure Database for PostgreSQL
  • 谷歌BigQuery
  • PostgreSQL
  • Snowflake

以下 Airflow 元数据会一并采集:

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

在 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”。

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

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

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

Microsoft Purview 支持从你自己的 Event Hubs 接收事件并向其推送事件。 按照此文档为 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 配置。

后续步骤