Download for MacApple silicon, macOS 14+
Skill

spark-lineage

@oleanderhq Updated 2026-08-10

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).