Spline
Official · maintained by Marmotmarmotdata/spline Discover Spark applications and their lineage from a Spline server
The Spline plugin discovers Spark applications and their lineage from a Spline server.
It reads the Spline consumer API and creates one Pipeline asset per Spark application name, not per run, so a job that runs nightly stays a single asset. Every run in the window becomes a run history event, including failures.
Lineage
Spline records the URI Spark read from or wrote to. The plugin resolves those URIs to the assets other Marmot plugins publish, so a Spark job links to the real PostgreSQL table or S3 bucket rather than to a copy of it. Resolved schemes: jdbc: for PostgreSQL, MySQL, MariaDB, SQL Server, Oracle, Redshift and Snowflake, s3/s3a/s3n, gs, abfs/abfss, hive and delta. Anything else produces no edge.
The plugin creates no tables or buckets of its own. An edge only appears in Marmot once the plugin that owns the other end has catalogued it.
Column Lineage
With include_column_lineage the plugin reads Spline's attribute lineage for every column of a run's output and stores it on the pipeline as JSON under the column_lineage metadata key, keyed by the MRN of the table produced. Marmot's lineage edges carry no column information, so it is recorded as metadata rather than on the edge.
Host
host is the Spline REST gateway root. A /consumer or /producer suffix is stripped, so pasting either API's URL works.
In the UI
Point-and-click, no config file needed.
- 1 Open Runs Create pipeline
- 2 Pick Spline from the plugin list.
- 3 Fill in the wizard, set a schedule, save.
With the CLI
Save a YAML config, then run marmot ingest.
name: my-spline-pipeline
runs:
- spline:
host: "<host>"$ marmot ingest -c ingest.yamlNot using plugins? Other ways to populate Marmot
Configuration
13 top-level fields. * marks required fields.
tags multiselect Tags to apply to discovered assets
external_links object[] External links to show on all assets
name string Display name for the link
icon string Icon identifier for the link
url string URL to the external resource
filter object Filter discovered assets by name (regex)
include multiselect Include patterns for resource names (regex)
exclude multiselect Exclude patterns for resource names (regex)
host string Spline REST gateway URL, for example http://spline:8080
ui_host string Spline UI URL, used for links back to a run
username string Username for basic authentication
password password Password for basic authentication
token password Bearer token, as an alternative to basic authentication
verify_ssl bool Verify the server's TLS certificate
- default
- true
days int Only ingest Spark runs from the last N days
- default
- 7
max_events int Maximum number of Spark runs to read
- default
- 1000
page_size int Number of runs to read per request
- default
- 100
include_column_lineage bool Read column level lineage for each run
- default
- true
Assets emitted
Metadata this plugin attaches to each discovered asset.
Spline
SplineFieldsThe metadata fields the Spline plugin emits for Pipeline assets.
framework stringFramework that ran the application, for example spark 3.5.0
execution_count intNumber of runs seen in the ingest window
last_execution_at stringWhen the most recent run finished
last_execution_id stringSpline execution event id of the most recent run
last_duration_ms intDuration of the most recent run in milliseconds
last_error stringError message of the most recent run, when it failed
application_ids string[]Recent Spark application ids, newest first
execution_plan_ids string[]Recent Spline execution plan ids, newest first
system_name stringSystem that produced the execution plan, for example spark
system_version stringVersion of that system
agent_name stringSpline agent that captured the run
agent_version stringVersion of the Spline agent
inputs string[]Raw data source URIs the application read
outputs string[]Raw data source URIs the application wrote
column_lineage stringColumn level lineage as JSON, keyed by the MRN of the table produced
url stringLink to the most recent run in the Spline UI
Run Facet
SplineRunFacetFieldsThe facets attached to each run history event.
application_id stringSpark application id of the run
duration_ms intDuration of the run in milliseconds
execution_plan_id stringSpline execution plan the run used
output stringData source URI the run wrote to
append boolWhether the run appended to the output instead of overwriting it