Skip to content

feat: add basic openlineage support#718

Draft
sweb wants to merge 1 commit into
mainfrom
feat/openlineage-support
Draft

feat: add basic openlineage support#718
sweb wants to merge 1 commit into
mainfrom
feat/openlineage-support

Conversation

@sweb

@sweb sweb commented Jul 10, 2026

Copy link
Copy Markdown
Member

Description

Allows to configure openlineage for Spark

Definition of Done Checklist

  • Not all of these items are applicable to all PRs, the author should update this template to only leave the boxes in that are relevant
  • Please make sure all these things are done and tick the boxes

Author

  • Changes are OpenShift compatible
  • CRD changes approved
  • CRD documentation for all fields, following the style guide.
  • Helm chart can be installed and deployed operator works
  • Integration tests passed (for non trivial changes)
  • Changes need to be "offline" compatible
  • Links to generated (nightly) docs added
  • Release note snippet added

Reviewer

  • Code contains useful comments
  • Code contains useful logging statements
  • (Integration-)Test cases added
  • Documentation added or updated. Follows the style guide.
  • Changelog updated
  • Cargo.toml only contains references to git tags (not specific commits or branches)

Acceptance

  • Feature Tracker has been updated
  • Proper release label has been added
  • Links to generated (nightly) docs added
  • Release note snippet added
  • Add type/deprecation label & add to the deprecation schedule
  • Add type/experimental label & add to the experimental features tracker

/// IMPORTANT: the version MUST stay in sync with the `openlineage-spark-version` build-argument in
/// `docker-images/spark-k8s/boil-config.toml` (the image is what places the jar at this path).
pub const OPENLINEAGE_JAR_LOCAL_URI: &str =
"local:///stackable/spark/openlineage/openlineage-spark_2.13-1.51.0.jar";

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this needs a way that is version agnostic / some proper way to keep this in sync other than a comment.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The way we solved similar problems in the past was to use symlinks

/// `ADDRESS` contract of the existing `vectorAggregatorConfigMapName` discovery ConfigMap.
pub const OPENLINEAGE_CONFIG_MAP_ADDRESS_KEY: &str = "ADDRESS";

/// Java module-system flag OpenLineage requires on Spark 4.x: without it the driver throws a

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Check how this changes for Spark 3.5.8


submit_conf.insert(
"spark.openlineage.transport.type".to_string(),
"http".to_string(),

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

right now limited to http - first version probably needs https support

// OpenLineage on Spark 4.x needs `java.base/java.security` opened to the unnamed module,
// otherwise the driver throws a non-fatal `InaccessibleObjectException` and silently degrades
// extension-interface lineage (MVP §7). Added to both driver and executor.
if spark_application

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

see other comment, this needs proper Spark 3 treatment.

};

let name = config_map_name.as_ref();
let namespace = spark_application.namespace().unwrap_or_default();

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this needs to become an error instead of default

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants