Data lineage for Kedro #5728
ravi-kumar-pilla
started this conversation in
Idea
Replies: 1 comment
|
hey @ravi-kumar-pilla thank you for the TD and the summary in discussion here. For me to vote on these, I think I'd need a rough engineering effort for each option. I currently lean towards decision A because it looks simplest, but that could be a wrong assumption, maybe from the work you already did, you might say the other decision is actually less effort Even just a rough S/M/L would help me understand the trade-offs better. And would love to know which one is your recommendation? |
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Summary
Session 1 of the Data lineage tech design is ready for team feedback.
This is the first of a three part series. Session 1 sets vision, scope, and direction. We will only write Sessions 2 and 3 once we align here.
Please read Session 1 and comment on the design decisions below. Right now we care about alignment on direction, not implementation detail.
Background
What Session 1 proposes
Kedro already has a dependency graph (node inputs/outputs) and a local Workflow view. That works well for local debugging, but not for run history, lineage across the org, or compliance. Here is the proposal:
kedro.inspection/get_project_snapshot()(already in progress)We are not building a full enterprise catalog inside Kedro.
Design decisions we need alignment on
Please comment on each decision. 👍 / 👎 reactions are welcome as a rough signal, but threaded comments with your reasoning are what help us most.
Decision A: Scope (extend Viz, don't replace it)
Proposal: Keep Kedro-Viz Flowchart and Workflow view for local dev. Add OpenLineage so production runs can reach Marquez/DataHub. Do not try to turn Kedro-Viz into an enterprise catalog.
Question: Do you agree with this scope boundary?
Decision B: Runtime events use OpenLineage, not custom JSON
Proposal: Replace the custom
.viz/kedro_pipeline_events.jsonformat with standard OpenLineage RunEvents. DataHub and Marquez already ingest this format.Question: Is OpenLineage the right standard for Kedro runtime lineage events?
Alternatives to flag: Keep a Kedro specific event schema. Or support OpenLineage only as an optional export.
Decision C: Emission lives in a plugin, not Kedro core or Kedro-Viz
Proposal: Build on the community kedro-openlineage PoC as an official kedro-org plugin. Hooks listen during
kedro runand emit events. This works in CI and production without installing Kedro-Viz.Question: Do you agree runtime OpenLineage emission should be a plugin, not core?
Alternatives to flag: Ship OpenLineage emission in Kedro core (Airflow style). Or keep it community maintained only.
See core vs plugin rationale for the comparison with dbt, Dagster, and Airflow.
Decision D: One emitter, two outputs
Proposal: A single OpenLineage emitter with two configurable sinks:
.viz/lineage_events.jsonQuestion: Do you agree we should consolidate today's separate hook paths into one emitter, two outputs?
Note: The file sink is overwritten each run (last run only). The HTTP sink appends to the catalog server's history. That history lives in the org's data catalog (Marquez, DataHub, or similar).
Decision E: Split
metadata.kedrovsmetadata.kedro-vizin catalog.ymlProposal: Governance fields (owner, description, consumers) live under
metadata.kedroand can be published to enterprise catalogs. UI only fields (layer, preview, styling) stay undermetadata.kedro-viz.Question: Do you agree with this namespace split before we define the full schema in Session 2?
Decision F: Validation on the same lineage event stream
Proposal: Validation results attach to OpenLineage RunEvents via the
dataQualityAssertionsfacet. No separate validation event stream.Question: Do you agree lineage and validation should share one event stream (aligned with #5311)?
Roadmap alignment (high level)
If the decisions above look right, this is the phased plan Sessions 2 and 3 will detail:
get_project_snapshot()(in progress)metadata.kedroschema, extend snapshot, document table level lineageQuestion: Does this phase ordering make sense for what Kedro users need first?
Explicitly out of scope for Session 1
These are Session 2+ topics. Please don't block Session 1 alignment on them. We will design them next:
runIdperkedro run(UUID mapping from Kedro session ID)PipelineRunStatusHookandDatasetStatsHookHow to give feedback
metadata.kedrosplit), F (validation on the same stream).What happens next
chore/spike_lineagebranch. We will revise Session 1 in the spike doc if needed and reply in thread when a decision looks settled.Thanks for reading. Looking forward to your thoughts.
All reactions