MCPcopy Index your code
hub / github.com/OpenLineage/OpenLineage

github.com/OpenLineage/OpenLineage @1.51.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release 1.51.0 ↗ · + Follow
9,499 symbols 42,486 edges 1,315 files 1,903 documented · 20%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

CircleCI status Slack license maven CII Best Practices

Overview

OpenLineage is an Open standard for metadata and lineage collection designed to instrument jobs as they are running. It defines a generic model of run, job, and dataset entities identified using consistent naming strategies. The core lineage model is extensible by defining specific facets to enrich those entities.

OpenLineage is an LF AI & Data Foundation Graduate project under active development, and we welcome contributions.

Problem

Before

  • Duplication of effort: each project has to instrument all jobs
  • Integrations are external and can break with new versions

Before OpenLineage

With OpenLineage

  • The effort of integration is shared
  • An integration can be pushed in each project: no need to play catch up

With OpenLineage

Scope

OpenLineage defines the metadata for running jobs and the corresponding events. A configurable backend allows the user to choose what protocol to send the events to. Scope

Core model

Model

A facet is an atomic piece of metadata attached to one of the core entities. See the spec for more details.

Spec

The specification is defined using OpenAPI and allows extension through custom facets.

Integration matrix

OpenLineage supports integrations with several systems.

Name Table-level lineage Column-level lineage
Apache Spark :white_check_mark: :white_check_mark:1
Apache Airflow :white_check_mark: :white_check_mark:2
dbt :white_check_mark: :white_check_mark:
Flink :white_check_mark: :x:
  1. Does not support SELECT * queries with JDBC.
  2. Supports selected SQL-based operators (see all supported operators).

Related projects

  • Marquez: Marquez is an LF AI & DATA project to collect, aggregate, and visualize a data ecosystem's metadata. It is the reference implementation of the OpenLineage API.
  • OpenLineage collection implementation
  • Egeria: Egeria offers open metadata and governance for enterprises - automatically capturing, managing and exchanging metadata between tools and platforms, no matter the vendor.

Community

Talks

Contributing

See CONTRIBUTING.md for more details about how to contribute.

Report a Vulnerability

If you discover a vulnerability in the project, please open an issue and attach the "security" label.

Star History

Star History Chart


SPDX-License-Identifier: Apache-2.0\ Copyright 2018-2026 contributors to the OpenLineage project

Extension points exported contracts — how you extend this code

Facet (Interface)
Facet is implemented by all facet types that can be applied to a facet container. [44 implementers]
client/go/pkg/facets/facets.go
DatasetNaming (Interface)
Interface representing dataset naming logic for a specific platform. [58 implementers]
client/java/src/main/java/io/openlineage/client/dataset/Naming.java
DatasetBuilderFactory (Interface)
Provides input and output dataset builders All common AbstractQueryPlanDatasetBuilder need to be grouped and [9 implementers]
integration/spark/shared/src/main/java/io/openlineage/spark/agent/lifecycle/DatasetBuilderFactory.java
DatasetIdentifierVisitor (Interface)
Interface for methods allowing translating Flink lineage facets into OpenLineage dataset identifiers. [78 implementers]
integration/flink/flink2/src/main/java/io/openlineage/flink/visitor/identifier/DatasetIdentifierVisitor.java
InputDatasetWithFacets (Interface)
Interface representing an input dataset with associated facets (metadata). Classes implementing this interface provi [4 …
integration/spark-extension-interfaces/src/main/java/io/openlineage/spark/shade/extension/v1/InputDatasetWithFacets.java
AsJavaObject (Interface)
(no doc) [6 implementers]
integration/sql/iface-java/src/lib.rs
Type (Interface)
Type is the IR type discriminant; all concrete IR types implement this interface.
generator/go/ir/types.go
OpenLineageExtensionProvider (Interface)
(no doc) [1 implementers]
integration/spark-extension-entrypoint/src/main/java/io/openlineage/spark/extension/OpenLineageExtensionProvider.java

Core symbols most depended-on inside this repo

get
called by 1177
integration/spark/app/src/main/java/io/openlineage/spark/agent/UrlParser.java
build
called by 876
client/java/src/main/java/io/openlineage/client/transports/TransportBuilder.java
map
called by 792
integration/spark/shared/src/main/java/io/openlineage/spark/agent/util/ScalaConversionUtils.java
get
called by 771
integration/common/src/openlineage/common/provider/dbt/local.py
getName
called by 494
integration/spark/shared/src/main/java/io/openlineage/spark/agent/lifecycle/plan/catalog/CatalogHandler.java
add
called by 425
integration/spark/shared/src/main/java/io/openlineage/spark/agent/JobMetricsHolder.java
empty
called by 421
integration/spark/shared/src/main/java/io/openlineage/spark/api/Vendors.java
name
called by 365
integration/spark/test-commons/src/testFixtures/java/io/openlineage/spark/agent/DynamicParameter.java

Shape

Method 6,494
Class 1,570
Function 1,025
Route 178
Struct 134
Interface 75
Enum 11
TypeAlias 11
FuncType 1

Languages

Java67%
Python23%
Go6%
Rust3%
Kotlin1%
TypeScript1%

Modules by API surface

client/go/pkg/facets/facet_helpers.gen.go198 symbols
client/python/tests/test_client.py125 symbols
client/java/src/main/java/io/openlineage/client/dataset/Naming.java120 symbols
client/go/pkg/facets/facets.gen.go106 symbols
client/python/src/openlineage/client/naming/dataset.py90 symbols
client/python/tests/test_source_code_location.py86 symbols
client/python/tests/test_datadog.py83 symbols
client/java/generator/src/main/java/io/openlineage/client/SchemaParser.java74 symbols
integration/common/tests/dbt/structured_logs/test_structured_logs.py70 symbols
client/java/generator/src/main/java/io/openlineage/client/TypeResolver.java69 symbols
client/python/tests/test_file.py67 symbols
client/python/tests/test_dataset.py64 symbols

Datastores touched

(mysql)Database · 1 repos
iceberg_databaseDatabase · 1 repos
(mongodb)Database · 1 repos
dbDatabase · 1 repos
sparkdataDatabase · 1 repos
eventsDatabase · 1 repos
defaultDatabase · 1 repos
mydbDatabase · 1 repos

For agents

$ claude mcp add OpenLineage \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact