spark-lineage
Preserves connected OpenLineage for oleander Spark jobs by avoiding collect()/toPandas() between read and write, and using env vars for runtime config. Use when lineage looks disconnected, jobs split after collect(), or rewriting Spark pipelines for continuous lineage.
Install
With your agent
Install OMGSkills skill "oleanderhq/claude-plugin:skills/spark-lineage" into this agent's normal skills directory: call the OMGSkills MCP get_install_plan tool for your agent and run the script it returns (it installs only the pinned commit and verifies SKILL.md), and stop if MCP or the pin is unavailable. Do not overwrite or change existing skills without asking me.
Manual command
git clone https://github.com/OleanderHQ/claude-plugin /tmp/claude-plugin && ln -s /tmp/claude-plugin/skills/spark-lineage ~/.claude/skills/spark-lineage
From README
oleander Spark Lineage Use this skill when Spark lineage in oleander looks disconnected or when rewriting Spark jobs to preserve connected lineage. Lineage context Key behavior from oleander Spark/OpenLineage integrations: collect() is a Spark action that materializes data into driver memory. After collect(), execution is regular Python in-memory logic, not distributed Spark DataFrame execution. Spark can treat "read + collect" and "write from memory" as separate jobs. The OpenLineage Spark integration may not connect those phases as one continuous lineage path. Recommended lineage-safe pattern Prefer this shape for connected lineage: df = spark.table(...) chain DataFrame transforms (select, withColumn, join, aggregate) finalize with df.write(...) If collect() is required, keep it for small side-effects or reporting, not as the core bridge between read and write. Rewrite checklist When fixing lineage gaps: Find points where data leaves Spark (collect, toPandas, driver loops).
More from this repo
lake-catalog
Engine-agnostic oleander lake catalog conventions: catalog.namespace.table naming, hierarchy, and catalog-qualified...
lake-query
Runs lake SQL through oleander's query router: query_run for reads, query_submit for writes, spark_sql_submit for named...
polars-submit
Runs Polars queries or scripts on oleander via the CLI, in local or distributed mode, and saves results to the lake...
