Modern analytics and AI systems evolve continuously. Schemas change. Logic is refined. Models are retrained. Agents become more autonomous.
Yet one thing often remains static: the data used to test these systems.
This mismatch creates a quiet but serious risk. Pipelines may continue to run, but teams lose confidence that they will behave correctly when real-world conditions change.
Rockfish was built to close this gap.
The Problem: Continuous Code, Static Test Data
Platforms like Databricks make it easy to run analytics and AI workloads at scale. Jobs are scheduled, pipelines are re-executed, and models are retrained as systems evolve.
But the test data feeding those workflows is often:
- A one-time snapshot of historical data
- Hand-crafted mock datasets
- Small production samples that quickly become outdated
As schemas evolve, these datasets drift away from reality. They stop reflecting current constraints, relationships, and edge cases — making test results increasingly unreliable.
Rockfish: Making Data as Iterative as Code
Rockfish treats synthetic data as a first-class pipeline, not a one-off artifact.
Instead of generating data once, Rockfish enables teams to:
- Generate realistic datasets from schemas or small seed data
- Regenerate data whenever schemas or requirements change
- Explicitly control distributions, correlations, and edge cases
- Use the same data generation process repeatedly for regression testing
This makes synthetic data continuous — designed to evolve alongside analytics and AI pipelines.
How the Rockfish + Databricks Connector Works
Rockfish integrates with Databricks using standard interfaces, making it easy to plug synthetic data generation into existing workflows.
At a high level, the flow is simple: Load → Generate → Run
A typical workflow looks like this:
1) Load (optional)
When seed data exists, Rockfish can pull a subset of tables from Databricks using its SQL interface.
{
"worker_name": "databricks-sql-loader",
"config": { "sql": "select * from default.databricks_table" }
}
2) Generate
Rockfish generates synthetic datasets from schemas or small seeds, preserving structure, relationships, and distributions while allowing teams to explicitly test edge cases.
3) Run
Generated data is written back to Databricks-accessible storage (DBFS) and consumed by existing jobs — unchanged.
{
"worker_name": "databricks-volumes-save",
"config": { "path": "/Volumes/<catalog>/<schema>/<volume>/path/to/file", "format": "csv" }
}
Because Rockfish relies on Databricks SQL and DBFS, it fits naturally into existing Databricks automation and scheduling patterns.
Why This Enables Continuous Validation
By pairing Rockfish with Databricks, teams can move from static testing to continuous validation:
- When schemas change → regenerate data
- When logic changes → re-run pipelines
- When edge cases matter → explicitly simulate them
- When production data isn’t accessible → keep moving anyway
This is especially critical for AI and agent-based workflows, where small data inconsistencies can lead to unpredictable behavior.
Rockfish ensures that every Databricks run is backed by data that reflects current system reality — not yesterday’s assumptions.
From “Does It Run?” to “Does It Hold Up?”
Databricks provides the execution backbone.Rockfish provides the continuously regenerating data layer.
Together, they allow teams to test earlier, iterate faster, and deploy with confidence — without waiting for production data access or relying on brittle mock datasets.
Rockfish supports Databricks as part of its connector ecosystem and is a Databricks Validated Partner, enabling continuous synthetic data generation directly inside Databricks-based workflows.
Authored by Deepti Mande, Director, Product Management at Rockfish. Connect on LinkedIn.