OpenLineage is an open standard and API for collecting data lineage. Instead of every catalog or tool inventing its own way to capture how data flows, OpenLineage defines a common event format that pipelines emit as they run, and a common API to collect it. It's a specification first, with integrations for the tools that produce and consume lineage - a vendor-neutral backbone rather than a product.
Run-level, event-based lineage
OpenLineage captures lineage from actual runs, not by parsing static code. As a job executes, it emits events describing the run, the input datasets it read, and the output datasets it wrote - including schema and, where supported, column-level detail. Because the data is collected at runtime, it reflects what really happened, including dynamic inputs that static analysis would miss.
Integrations
OpenLineage ships integrations for common pipeline tools - Apache Airflow, Spark, dbt, Flink - that emit standard events automatically. Those events flow to any compatible backend: Marquez (the reference implementation that stores and visualizes them), or catalogs like DataHub and others that consume the standard. The point is interoperability: instrument once, and any OpenLineage-aware consumer can use the lineage.
Why a standard matters
Lineage has historically been fragmented - each catalog built bespoke, partial collectors. OpenLineage's value is a shared contract so lineage isn't locked into one vendor and tools can interoperate. It is part of the LFAI & Data foundation and has become the de facto open standard for pipeline lineage.
Where it fits
- Instrumenting Airflow/Spark/dbt pipelines to emit lineage automatically.
- Feeding lineage into Marquez or a catalog without bespoke integration code.
- Avoiding lineage lock-in by standardizing on an open format.
OpenLineage is the standard and collection layer; Marquez is the common store/UI for it, and catalogs consume it for the discovery and governance experience.