How assurance works

See what the comparison found

One workload ran on EMR Serverless 6.15.0 and 7.5.0. Its report returned INSUFFICIENT_EVIDENCE; a seeded rounding difference returned DO_NOT_CUT_OVER.

Two comparisons, two verdicts

The seeded comparison adds one rounding difference to the same workload.

INSUFFICIENT_EVIDENCE
EQUIVALENT

One workload — tpch-q1-reference-v1 — executed on both releases. 10 equality assertions ran and no differences were found. The report returned INSUFFICIENT_EVIDENCE because no estate inventory or static scan was attached.

Baseline and candidate runs
FieldBaselineCandidate
EngineEMR Serverless emr-6.15.0EMR Serverless emr-7.5.0
Spark3.4.1-amzn-23.5.2-amzn-1
Wall clock48.5s19.6s (−59.5%)
Metered cost$0.0157$0.0202
DO_NOT_CUT_OVER
DIFFERENCE FOUND

A seeded rounding difference changed the output schema, row content hash, and three aggregates. The comparator returned DO_NOT_CUT_OVER.

  • Tolerance for this comparison was rel=0.0, abs=0.0 — exact equality. Any rounding change fails the check.
  • The seeded run is 00g7nppt0p4fu80b, a real job run in the same account and region.

How a verdict is produced

Run a versioned workload on both releases, compare the results, and report what the evidence supports.

Step 1
Pin the workload

A verdict applies to one workload version. This comparison used tpch-q1-reference-v1.

Step 2
Execute on both releases

Run the same workload on both releases. The reference comparison used EMR Serverless 6.15.0 and 7.5.0 in us-east-1. An assurance harness submitted those runs; SparkPilot's governed dispatch was not used.

Step 3
Capture what each release reports

Record output schema, row content hash, aggregates, wall clock, and reported resource use for both runs.

Step 4
Assert equality at a declared tolerance

The reference comparison ran 10 equality assertions at the declared exact tolerance (rel=0.0, abs=0.0) and found no differences. Verdict: EQUIVALENT.

Step 5
Emit a scoped verdict

The reference pair returned INSUFFICIENT_EVIDENCE: its ten checks passed, but no estate inventory or static scan was attached. The seeded difference returned DO_NOT_CUT_OVER.

What gets compared

Three axes were exercised by the reference migration, each with the figure it produced.

Outputs

Checks cover column types, a row content hash, and aggregates. The seeded fault changed all three.

10 assertions · 0 differences
Runtime

Wall clock measured on each run, shown alongside the output checks.

48.5s on emr-6.15.0 · 19.6s on emr-7.5.0
Cost

Reported resource use priced at published rates. This estimate excludes other charges; missing usage reads not measured.

$0.0157 on emr-6.15.0 · $0.0202 on emr-7.5.0

The negative control, in full

Five recorded differences from the seeded run at exact tolerance (rel=0.0, abs=0.0).

CheckBaseline · emr-6.15.0Candidate · emr-7.5.0Result
q1_input_sample
Schema equivalence4 columns4 columnsPASS
Row count100100PASS
Row hashsha256 04553898f826…sha256 04553898f826…PASS
Null counts0 nulls / 4 columns0 nulls / 4 columnsPASS
Numeric aggregates9 aggregates9 aggregatesPASS
q1_pricing_summary
Schema equivalence10 columns10 columnsDIFFERED
ValueBaselineCandidate
sum_charge typedecimal(38,6)decimal(38,1)
Row count66PASS
Row hashsha256 984eb4735fc1…sha256 5e7671c91ac6…DIFFERED
ValueBaselineCandidate
content hash differs984eb4735fc1b990…5e7671c91ac6d5cc…
Null counts0 nulls / 10 columns0 nulls / 10 columnsPASS
Numeric aggregates24 aggregates24 aggregatesDIFFERED
ValueBaselineCandidate
sum_charge:max1418207490.4101811418207475.3
sum_charge:min1391007086.0812121391007105.8
sum_charge:sum8427644657.0161888427644818.5

Compared exactly, with no tolerance.

On a narrow screen, swipe horizontally to read the full table.

Run identifiers

The EMR application and job-run identifiers behind the figures on this page, in AWS account 400920695203, us-east-1.

  • Reference migrationapplication 00g7nppcfcrf8i09 · job run 00g7nppqou31tg0b
  • Reference migrationapplication 00g7nppdqs2mr409 · job run 00g7npps1fnug00b
  • Seeded negative controljob run 00g7nppt0p4fu80b

Read the report itself

Read the source reports and sample assessment behind these figures.

What this does not prove

These are the limits of the reference comparison.

The estate inventory has not been run against a real estate

The report records 0 jobs inventoried, 0 source files scanned, and an incomplete inventory. Estate-scale discovery and scanning remain unverified.

One workload, one migration path, one runtime-upgrade pair

tpch-q1-reference-v1 across EMR Serverless 6.15.0 → 7.5.0. No second workload, release pair, or migration path has been taken end to end.

The verdict is scoped on purpose

The reference verdict is INSUFFICIENT_EVIDENCE. Ten checks passed for one workload; the estate was not inventoried.

Failure-mode divergence was not exercised

Both releases completed the reference workload successfully, so this comparison never had to reconcile two different failures. Comparing how a workload fails across runtimes has not been proven.

Where this sits

Compare workload outputs, runtime, and reported resource cost across Spark versions.

Today that comparison is proven on outputs, wall clock, and platform-reported cost, for one workload across one runtime-upgrade pair. The reference workload succeeded on both releases, so failure-mode divergence was not exercised — see the section above.

Each report names the workload, the releases, the checks, and the verdict.

Bring us a workload and a destination

Tell us your workload and target runtime. We will check whether we can run the comparison and show you the resulting report.