# Spark Portability Assessment — SparkPilot reference migration (EMR 6.15.0 to 7.5.0 runtime upgrade)

**emr_serverless:emr-6.15.0 → emr_serverless:emr-7.5.0**

## Recommendation

### Insufficient evidence — nothing was proven either way

`INSUFFICIENT_EVIDENCE`

This report covers 1 workload(s) executed on both emr_serverless:emr-6.15.0 and emr_serverless:emr-7.5.0. No estate was inventoried, so this is a reference run of those workloads and not an assessment of an estate. It says nothing about workloads that were not run.

This recommendation follows from:

- no estate was inventoried, so nothing is known about workloads other than the one(s) run here
- no source was statically scanned for incompatible constructs

## Summary

- **Decision:** `INSUFFICIENT_EVIDENCE` — insufficient evidence — nothing was proven either way.
- **Jobs inventoried:** 0; **job definitions that cannot port as written:** 0.
- **Source files with blocking constructs:** none.
- **Distinct problems to fix:** 0.
- **Measured change:** emr_serverless:emr-7.5.0 vs emr_serverless:emr-6.15.0: wall clock -59.5%, metered cost +28.4% for the same output.
- **What this does not do:** SparkPilot converts nothing. Every problem above is manual work; the deliverable is the evidence, not the migration.

## Coverage

- Jobs inventoried: **0**
- Workloads executed on both platforms: **1**
- Source files scanned: **0**
- Job definitions parsed without error: **n/a — no job definitions were supplied**
- Estate enumeration: **not performed**

## Output equivalence

### `tpch-q1-reference-v1` — EQUIVALENT

emr_serverless:emr-6.15.0 vs emr_serverless:emr-7.5.0; 10 equality assertions executed.

No differences found.


## Performance and cost

| Workload | Platform | Wall clock (s) | Spark | Cost (USD) |
| --- | --- | --- | --- | --- |
| tpch-q1-reference-v1 | emr_serverless:emr-6.15.0 | 48.5 | 3.4.1-amzn-2 | 0.0157 |
| tpch-q1-reference-v1 | emr_serverless:emr-7.5.0 | 19.6 | 3.5.2-amzn-1 | 0.0202 |

**emr_serverless:emr-7.5.0 vs emr_serverless:emr-6.15.0: wall clock -59.5%, metered cost +28.4% for the same output.**

_**Neither figure is a platform claim, and this report does not offer one.** The two runs were not given stated, identical capacity — no run manifest records a worker count or size — so wall clock cannot be attributed to the engine. Metered cost is not a clean substitute: EMR Serverless bills each worker for a **one-minute minimum**, and a run shorter than that is charged for capacity it did not consume, which inflates the cost of the faster side. To obtain a defensible figure, re-run both sides at stated, identical capacity on a workload long enough to clear the billing minimum._

_Cost is the platform's own reported resource consumption for the run priced at that platform's published public rates. It is not a bill, and it is not a modelled forecast -- the consumption figures come from the run itself. Where a platform exposes no consumption feed the cell reads `not measured`, which is never rendered as zero._

_**Single observations. Run-to-run variance has not been characterised — these figures bound nothing and are not a benchmark.** Repeat both runs several times before treating any delta as real._

## Portability risks

_No known-incompatible constructs found by the inventory or the scanner._
## Evidence

Every claim above traces to one of these artifacts:

- **EMR Serverless pricing**: https://aws.amazon.com/emr/pricing/
- **EMR job run (emr615-baseline)**: application 00g7nppcfcrf8i09 / job run 00g7nppqou31tg0b in AWS account 400920695203, us-east-1
- **EMR job run (emr750-baseline)**: application 00g7nppdqs2mr409 / job run 00g7npps1fnug00b in AWS account 400920695203, us-east-1
- **billed utilisation + rates (emr615-baseline)**: 0.208 vCPU-hr x $0.052624/vCPU-hr + 0.831 GB-hr x $0.0057785/GB-hr = $0.0157 (EMR Serverless us-east-1 x86_64; from aws emr-serverless get-job-run; recomputable in scripts/generate_reference_migration_report.py)
- **billed utilisation + rates (emr750-baseline)**: 0.267 vCPU-hr x $0.052624/vCPU-hr + 1.067 GB-hr x $0.0057785/GB-hr = $0.0202 (EMR Serverless us-east-1 x86_64; from aws emr-serverless get-job-run; recomputable in scripts/generate_reference_migration_report.py)
- **comparator guard mutation run**: scripts/verify_equivalence_guards.py
- **manifest probe**: src/sparkpilot/migration/workloads/probe.py
- **raw run manifests**: docs/evidence/runs/
- **reference workload**: src/sparkpilot/migration/workloads/reference_tpch_q1.py

---

_Generated 2026-08-14T06:00:01+00:00 from commit `b10aac5`. Any platform rates cited above were read on that date and change without notice._
