支持的类

以下是支持 OpenLineage 提取的算子(Operators)和钩子(Hooks)列表,以及与支持的 SQL 算子兼容的特定数据库类型。

重要提示

虽然我们努力保持支持类列表的最新状态,但请注意,我们的更新过程是自动化的,可能并不总是能准确捕捉所有信息。检测钩子级别的血缘关系具有挑战性,因此请务必仔细核对下方提供的信息。

什么是“支持的算子”?

所有 Airflow 算子都会自动发出 OpenLineage 事件(除非被明确禁用或在调度期间被跳过,如 EmptyOperator),无论它们是否出现在“支持的”列表中。每个 OpenLineage 事件都将包含基本信息,例如:

  • 任务和 DAG 运行元数据(执行时间、状态、标签、参数、所有者、描述等)

  • 作业关系(任务所属的 DAG 作业、DAG 中任务之间的上游/下游关系等)

  • 错误消息(在任务失败的情况下)

  • Airflow 和 OpenLineage 提供商版本

“支持的”算子提供额外的元数据,用于增强血缘信息:

  • 输入和输出数据集(有时包含列级血缘)

  • 算子特定的详细信息,可能包括 SQL 查询文本和查询 ID、源代码、来自外部系统的作业 ID(例如 Snowflake 或 BigQuery 作业 ID)、数据质量指标以及其他信息。

例如,一个支持的 SQL 算子会在其 OpenLineage 事件中包含执行的 SQL 查询、查询 ID 以及输入/输出表信息。而不受支持的算子仍会出现在血缘图中,但不会包含这些详细信息。

提示

你可以轻松地为任何算子实现 OpenLineage 支持。请参阅 在算子中实现 OpenLineage

钩子级血缘

某些算子(如 PythonOperator)的功能就像一个“黑盒”,可以运行任意代码,这通常会阻止输入/输出数据集的提取。为了解决这个问题,Airflow 会跟踪钩子级血缘:当调用受支持的钩子方法时(即使是在 Python 可调用对象内部),OpenLineage 集成也可以自动捕获该执行过程中的血缘。例如,通过存储钩子读取文件可以报告该文件为输入数据集,而写入对象存储则可以报告输出数据集。

对于执行 SQL 的钩子(主要是 DbApiHook 的子类),集成功能可以更进一步。除了记录读取或写入了哪些资产(通过使用 SQL 解析)之外,它还可以提取执行的 SQL 文本和外部查询/作业 ID。对于每个查询,都会发送一对单独的子 OpenLineage 事件。

有关钩子级血缘何时附加到 OpenLineage 事件以及它如何与提取器(extractors)和输入/输出(inlets/outlets)交互的详细信息,请参阅 提取优先级

重要提示

捕获的详细程度因钩子和方法而异。有些可能只报告数据集信息,而另一些则暴露 SQL 文本、查询 ID 等。请查看钩子实现以确认可用的血缘数据。

Spark 算子

请参阅 OpenLineage Spark 集成

SQL 算子

继承自 BaseSQLOperator 的算子可能开箱即用地获得支持。这些算子可以使用 SQL 解析,并可能查询数据库以进行血缘提取。为了从每种数据库类型提取独特的数据,需要专门的钩子来实现 OpenLineage 方法。并非 BaseSQLOperator 的所有子类都会被自动支持,只有那些同时使用了受支持钩子并遵循类似属性命名约定(例如将查询存储在 self.sql 下)的算子才会被支持。

重要提示

OpenLineage 的提取级别在不同的 SQL 算子之间可能有所不同。大多数会提供执行的 SQL 文本,而其他算子可能还会暴露额外的元数据,例如查询 ID 或其他与查询相关的信息。由于本文档是自动生成的,一些列为支持的 SQL 算子可能不包含完整的血缘信息。请查看你的算子及其相应钩子的实现,以确认 OpenLineage 的支持级别。

目前,以下数据库(钩子)与 SQL 算子一起受到支持:

提供商

下文列出的来自每个提供商的算子和钩子均原生具备 OpenLineage 支持。

apache-airflow-providers-amazon (9.24.0)

操作符

钩子*

apache-airflow-providers-apache-drill (3.3.1)

钩子*

  • DrillHook

    • get_df()

    • get_df_by_chunks()

    • get_first()

    • get_pandas_df()

    • get_pandas_df_by_chunks()

    • get_records()

    • insert_rows()

    • run()

    • test_connection()

apache-airflow-providers-apache-druid (4.5.1)

钩子*

  • DruidDbApiHook

    • get_df()

    • get_df_by_chunks()

    • get_first()

    • get_pandas_df()

    • get_pandas_df_by_chunks()

    • get_records()

    • insert_rows()

    • run()

    • test_connection()

apache-airflow-providers-apache-hive (9.4.1)

钩子*

apache-airflow-providers-apache-impala (1.9.1)

钩子*

  • ImpalaHook

    • get_df()

    • get_df_by_chunks()

    • get_first()

    • get_pandas_df()

    • get_pandas_df_by_chunks()

    • get_records()

    • insert_rows()

    • run()

    • test_connection()

apache-airflow-providers-apache-pinot (4.10.1)

钩子*

apache-airflow-providers-common-io (1.7.2)

算子

apache-airflow-providers-common-sql (1.34.0)

SQL 算子*

钩子*

apache-airflow-providers-databricks (7.12.0)

算子

SQL 算子*

钩子*

apache-airflow-providers-dbt-cloud (4.8.0)

算子

apache-airflow-providers-elasticsearch (6.5.1)

钩子*

  • ElasticsearchSQLHook

    • get_df()

    • get_df_by_chunks()

    • get_first()

    • get_pandas_df()

    • get_pandas_df_by_chunks()

    • get_records()

    • insert_rows()

    • run()

    • test_connection()

apache-airflow-providers-exasol (4.10.1)

SQL 算子*

钩子*

apache-airflow-providers-ftp (3.14.2)

算子

apache-airflow-providers-google (21.0.0)

算子

SQL 算子*

钩子*

apache-airflow-providers-jdbc (5.4.2)

钩子*

  • JdbcHook

    • get_df()

    • get_df_by_chunks()

    • get_first()

    • get_pandas_df()

    • get_pandas_df_by_chunks()

    • get_records()

    • insert_rows()

    • run()

    • test_connection()

apache-airflow-providers-microsoft-mssql (4.5.1)

钩子*

  • MsSqlHook

    • get_df()

    • get_df_by_chunks()

    • get_first()

    • get_pandas_df()

    • get_pandas_df_by_chunks()

    • get_records()

    • insert_rows()

    • run()

    • test_connection()

apache-airflow-providers-mysql (6.5.1)

钩子*

apache-airflow-providers-odbc (4.12.1)

钩子*

  • OdbcHook

    • get_df()

    • get_df_by_chunks()

    • get_first()

    • get_pandas_df()

    • get_pandas_df_by_chunks()

    • get_records()

    • insert_rows()

    • run()

    • test_connection()

apache-airflow-providers-openlineage (2.13.0)

算子

apache-airflow-providers-oracle (4.5.2)

钩子*

apache-airflow-providers-pgvector (1.7.1)

SQL 算子*

钩子*

  • PgVectorHook

    • bulk_dump()

    • bulk_load()

    • copy_expert()

    • get_df()

    • get_df_by_chunks()

    • get_first()

    • get_pandas_df()

    • get_pandas_df_by_chunks()

    • get_records()

    • insert_rows()

    • run()

    • test_connection()

apache-airflow-providers-postgres (6.6.2)

钩子*

apache-airflow-providers-presto (5.11.1)

钩子*

apache-airflow-providers-sftp (5.7.2)

算子

apache-airflow-providers-snowflake (6.12.0)

算子

SQL 算子*

钩子*

  • SnowflakeHook

    • get_df()

    • get_df_by_chunks()

    • get_first()

    • get_pandas_df()

    • get_pandas_df_by_chunks()

    • get_records()

    • insert_rows()

    • run()

    • test_connection()

  • SnowflakeSqlApiHook

    • execute_query()

    • get_df()

    • get_df_by_chunks()

    • get_first()

    • get_pandas_df()

    • get_pandas_df_by_chunks()

    • get_records()

    • insert_rows()

    • run()

    • test_connection()

apache-airflow-providers-sqlite (4.3.1)

钩子*

  • SqliteHook

    • get_df()

    • get_df_by_chunks()

    • get_first()

    • get_pandas_df()

    • get_pandas_df_by_chunks()

    • get_records()

    • insert_rows()

    • run()

    • test_connection()

apache-airflow-providers-teradata (3.5.1)

SQL 算子*

钩子*

  • TeradataHook

    • get_df()

    • get_df_by_chunks()

    • get_first()

    • get_pandas_df()

    • get_pandas_df_by_chunks()

    • get_records()

    • insert_rows()

    • run()

    • test_connection()

apache-airflow-providers-trino (6.5.1)

钩子*

apache-airflow-providers-vertica (4.3.1)

钩子*

  • VerticaHook

    • get_df()

    • get_df_by_chunks()

    • get_first()

    • get_pandas_df()

    • get_pandas_df_by_chunks()

    • get_records()

    • insert_rows()

    • run()

    • test_connection()

apache-airflow-providers-ydb (2.5.1)

SQL 算子*

钩子*

  • YDBHook

    • get_df()

    • get_df_by_chunks()

    • get_first()

    • get_pandas_df()

    • get_pandas_df_by_chunks()

    • get_records()

    • insert_rows()

    • run()

    • test_connection()

此条目是否有帮助?