Apache Spark vs VecRuntime vs DataFusion Comet on TPC-DS 1 TB
VecRuntime runs Spark SQL's filters, projections, aggregates, sorts and joins on Arrow-layout batches with the Java Vector API -- on the JVM, no native code -- and moves batches between executors over its own Arrow Flight shuffle. Apache DataFusion Comet offloads the same operators to a native Rust engine. This page compares both against plain Apache Spark on the TPC-DS 1 TB workload on Amazon EKS, all three on identical hardware, data and Spark settings.
Summary
| Engine | Completion time (s) | Speedup | Faster than Spark on | Executor time (h) | GC (h) | Shuffle read (TB) |
|---|---|---|---|---|---|---|
| Apache Spark 4.1.3 | 3,313.2 | baseline | -- | 80.6 | 0.60 | 0.94 |
| VecRuntime | 2,419.7 | 1.37x (27% less) | 88 / 103 | 58.5 | 0.43 | 0.47 |
| DataFusion Comet 1.2.0-SNAPSHOT (+ #6268, #6270) | 2,177.9 | 1.52x (34% less) | 95 / 103 | 53.0 | 0.01 | 0.66 |
| Comet Native Scan + VecRuntime | 2,324.2 | 1.43x (30% less) | 87 / 103 | 55.1 | 0.13 | 0.48 |
Benchmark infrastructure
Methodology. Spark, VecRuntime and Comet ran one after another in one cluster session on 2026-09-30 (morning), on the same nine nodes, each alone on the cluster, over the same S3 data with the same Spark settings; only the execution engine and its own memory split differ (every engine has 50 GB per executor; where it puts them follows where it allocates). Comet Native Scan + VecRuntime ran the same afternoon in a second cluster session on the same node group, availability zone, image and settings; S3 throughput varies between sessions, so its comparison with the other three carries that uncertainty. Each query ran once after the plan was compiled; the time is the wall-clock of the query's execution as the runner measures it.
Test environment
| Component | Configuration |
|---|---|
| Dataset | TPC-DS scale factor 1000 (1 TB), Parquet on Amazon S3 (103 query variants, one measured iteration each, no warm-up) |
| Cluster | Amazon EKS 1.36; 9 x m5.4xlarge (16 vCPU, 64 GB, x86-64 with AVX-512), 300 GB root volume; one node group in one availability zone (us-east-1b), the driver on the ninth node |
| Executors | 8 executors x 13 cores x 50 GB each (Spark: 20 GB heap / 30 GB overhead; VecRuntime: 30 GB heap / 20 GB overhead; Comet: 20 GB heap / 6 GB overhead / 24 GB off-heap; Comet Native Scan + VecRuntime: 22 GB heap / 18 GB overhead / 10 GB off-heap); driver 2 cores x 4 GB |
| Storage | Amazon S3 through an S3 gateway VPC endpoint, Hadoop 3.4.3 S3A with the Analytics Accelerator input stream (the default in 3.4.3) |
Versions
| Component | Version |
|---|---|
| Spark | 4.1.3 |
| Scala | 2.13 |
| JDK | Amazon Corretto 25 |
| VecRuntime | main at cb755d1 (#554 in-place dictionary decode) |
| Comet | 1.2.0-SNAPSHOT, a source build: apache/datafusion-comet main b58b2f3a with the unmerged fixes #6268 (q5) and #6270 (q64) applied, native library for x86-64-v3 |
| Hadoop | 3.4.3 |
Configuration
Common to all three engines:
spark.sql.shuffle.partitions=300 # spark.sql.adaptive.advisoryPartitionSizeInBytes left at Spark's default (64 MB); no coalescePartitions.minPartitionNum spark.eventLog.enabled=true
VecRuntime:
spark.plugins=io.vecruntime.spark.VectorPlugin spark.shuffle.manager=org.apache.spark.sql.vecruntime.shuffle.VectorShuffleManager spark.vecruntime.exec.strictFloatingPoint=false # Comet's default too spark.vecruntime.shuffle.aqe.mapSizeScaling=true # AQE sees Spark-scale map output sizes (#514) spark.vecruntime.shuffle.aqe.sparkCompressionRatio=0 # the uncompressed-bytes ratio (#514) AOT class-data cache off --add-modules=jdk.incubator.vector --enable-native-access=ALL-UNNAMED (driver and executors)
Comet:
spark.plugins=org.apache.spark.CometPlugin spark.shuffle.manager=org.apache.spark.sql.comet.execution.shuffle.CometShuffleManager spark.memory.offHeap.enabled=true spark.memory.offHeap.size=24g spark.comet.exec.enabled=true spark.comet.scan.enabled=true spark.comet.exec.shuffle.enabled=true spark.comet.exec.shuffle.mode=auto spark.comet.cast.allowIncompatible=true spark.comet.explainFallback.enabled=true
Comet Native Scan + VecRuntime:
spark.plugins=org.apache.spark.CometPlugin,io.vecruntime.spark.VectorPlugin spark.shuffle.manager=org.apache.spark.sql.vecruntime.shuffle.VectorShuffleManager spark.vecruntime.shuffle.enabled=true spark.comet.enabled=true spark.comet.scan.enabled=true # CometNativeScanExec: DataFusion's Rust Parquet reader and object_store S3 I/O spark.comet.exec.enabled=true # with every Comet operator switched off: filter, project, aggregate, joins, sort, window, ... spark.comet.exec.shuffle.enabled=false spark.memory.offHeap.enabled=true spark.memory.offHeap.size=10g # executors 22 GB heap / 18 GB overhead (16 GB direct) / 10 GB off-heap = 50 GB # plus VecRuntime's keys above (strictFloatingPoint=false, mapSizeScaling=true, sparkCompressionRatio=0)
Performance results
Per query
Seconds per query, all 103, the three engines side by side (hover for values; click a legend entry to hide an engine).
Speedup over Spark, per query
Spark's time divided by the engine's; above 1 is faster than Spark. Log scale.
Performance distribution
VecRuntime vs Spark
| Range | Queries | Share |
|---|---|---|
| 20%+ improvement | 50 | 49% |
| 10-20% improvement | 18 | 17% |
| within ±10% | 29 | 28% |
| 10-20% degradation | 2 | 2% |
| 20%+ degradation | 4 | 4% |
Comet vs Spark
| Range | Queries | Share |
|---|---|---|
| 20%+ improvement | 74 | 72% |
| 10-20% improvement | 14 | 14% |
| within ±10% | 13 | 13% |
| 10-20% degradation | 1 | 1% |
| 20%+ degradation | 1 | 1% |
Comet Native Scan + VecRuntime vs Spark
| Range | Queries | Share |
|---|---|---|
| 20%+ improvement | 54 | 52% |
| 10-20% improvement | 22 | 21% |
| within ±10% | 20 | 19% |
| 10-20% degradation | 4 | 4% |
| 20%+ degradation | 3 | 3% |
Top 10 improvements -- VecRuntime
| Query | Spark (s) | VecRuntime (s) | Speedup |
|---|---|---|---|
| q29 | 34.3 | 9.8 | 3.49x (+71%) |
| q97 | 35.7 | 12.7 | 2.81x (+64%) |
| q6 | 10.1 | 3.9 | 2.60x (+62%) |
| q93 | 139.3 | 57.0 | 2.44x (+59%) |
| q23b | 281.7 | 117.7 | 2.39x (+58%) |
| q15 | 8.6 | 3.6 | 2.35x (+57%) |
| q81 | 20.8 | 10.1 | 2.05x (+51%) |
| q54 | 8.0 | 4.0 | 2.02x (+50%) |
| q68 | 6.9 | 3.6 | 1.93x (+48%) |
| q45 | 7.6 | 4.0 | 1.92x (+48%) |
Regressions -- VecRuntime
| Query | Spark (s) | VecRuntime (s) | Degradation |
|---|---|---|---|
| q18 | 9.2 | 12.4 | 35% slower (0.74x) |
| q12 | 2.2 | 2.9 | 31% slower (0.76x) |
| q36 | 5.4 | 6.7 | 24% slower (0.81x) |
| q99 | 10.1 | 12.3 | 22% slower (0.82x) |
| q3 | 3.6 | 4.2 | 16% slower (0.86x) |
| q11 | 42.2 | 48.2 | 14% slower (0.88x) |
| q21 | 1.8 | 1.9 | 8% slower (0.93x) |
| q7 | 6.6 | 7.1 | 7% slower (0.93x) |
| q24b | 100.6 | 105.6 | 5% slower (0.95x) |
| q28 | 110.6 | 115.6 | 5% slower (0.96x) |
Top 10 improvements -- Comet
| Query | Spark (s) | Comet (s) | Speedup |
|---|---|---|---|
| q6 | 10.1 | 2.3 | 4.43x (+77%) |
| q97 | 35.7 | 12.4 | 2.88x (+65%) |
| q87 | 32.1 | 12.3 | 2.60x (+62%) |
| q81 | 20.8 | 8.5 | 2.45x (+59%) |
| q15 | 8.6 | 3.6 | 2.38x (+58%) |
| q67 | 126.4 | 55.0 | 2.30x (+56%) |
| q23b | 281.7 | 123.5 | 2.28x (+56%) |
| q22 | 8.4 | 3.7 | 2.25x (+56%) |
| q21 | 1.8 | 0.8 | 2.22x (+55%) |
| q73 | 5.7 | 2.6 | 2.22x (+55%) |
Regressions -- Comet
| Query | Spark (s) | Comet (s) | Degradation |
|---|---|---|---|
| q32 | 1.5 | 2.4 | 63% slower (0.61x) |
| q71 | 3.2 | 3.7 | 13% slower (0.88x) |
| q77 | 2.4 | 2.6 | 8% slower (0.93x) |
| q62 | 24.4 | 26.1 | 7% slower (0.94x) |
| q55 | 2.1 | 2.2 | 5% slower (0.95x) |
| q49 | 45.1 | 47.0 | 4% slower (0.96x) |
| q76 | 42.4 | 43.9 | 4% slower (0.96x) |
| q66 | 10.0 | 10.0 | 0% slower (1.00x) |
Top 10 improvements -- Comet Native Scan + VecRuntime
| Query | Spark (s) | Mixed (s) | Speedup |
|---|---|---|---|
| q29 | 34.3 | 9.2 | 3.72x (+73%) |
| q93 | 139.3 | 52.4 | 2.66x (+62%) |
| q97 | 35.7 | 13.8 | 2.59x (+61%) |
| q50 | 66.8 | 27.9 | 2.39x (+58%) |
| q23b | 281.7 | 119.4 | 2.36x (+58%) |
| q73 | 5.7 | 2.5 | 2.27x (+56%) |
| q68 | 6.9 | 3.1 | 2.22x (+55%) |
| q81 | 20.8 | 10.0 | 2.09x (+52%) |
| q95 | 115.4 | 57.1 | 2.02x (+50%) |
| q45 | 7.6 | 3.8 | 2.01x (+50%) |
Regressions -- Comet Native Scan + VecRuntime
| Query | Spark (s) | Mixed (s) | Degradation |
|---|---|---|---|
| q83 | 1.7 | 4.5 | 163% slower (0.38x) |
| q66 | 10.0 | 13.1 | 31% slower (0.76x) |
| q3 | 3.6 | 4.6 | 28% slower (0.78x) |
| q36 | 5.4 | 6.4 | 18% slower (0.85x) |
| q99 | 10.1 | 11.9 | 18% slower (0.85x) |
| q39a | 5.9 | 6.7 | 15% slower (0.87x) |
| q7 | 6.6 | 7.5 | 14% slower (0.88x) |
| q11 | 42.2 | 46.3 | 10% slower (0.91x) |
| q12 | 2.2 | 2.4 | 9% slower (0.91x) |
| q62 | 24.4 | 26.3 | 8% slower (0.93x) |
Where each engine wins
The heavy joins are VecRuntime's: q93 57.0 s against Spark's 139.3 and Comet's 85.9; q64 48.6 against 92.7 and 63.8; q50 38.4 against 66.8 and 47.4; q29 9.8 against 34.3 and 15.6; q23b 117.7 against 281.7 and 123.5. Its shuffle moves 0.47 TB where Spark's moves 0.94 and Comet's 0.66. Comet leads where the scan dominates -- q9 60.1 s against VecRuntime's 87.1, q28 84.6 against 115.6, q88 96.5 against 111.2 -- and on the heavy aggregates: q4 46.4 against 86.4, q11 27.4 against 48.2, q67 55.0 against 66.8. Comet Native Scan + VecRuntime separates the two: on Comet's Parquet reader VecRuntime's operators take q28 to 82.5 s, q9 to 65.4, q88 to 97.1 and q44 to 26.5 (Comet 26.9), and q50 to 27.9 and q93 to 52.4, so the scan-bound gap is the reader's; q4 (84.1), q11 (46.3) and q67 (68.2) barely move, so that gap is in the aggregates. VecRuntime's losses to Spark are q18 (12.4 s against 9.2, a cold query; the AOT cache is off here, #558), q99, q11, and the scan-bound q28 and q24b.
Notes
- Every engine returned Spark's row counts on every query, and Spark's checksums on every query except q65, whose result has ties that every engine orders differently.
- The three legs ran on 2026-09-30 in one cluster session on the same nine nodes, one after another (Spark, VecRuntime, Comet), each alone on the cluster. S3 throughput varies between sessions, so only legs from one session are compared.
- Comet is a source build of main with two unmerged fixes: #6268, without which q5 fails at 1 TB with native scans, and #6270, without which q64 loses rows (apache/datafusion-comet#6264; 0 rows against 12,185 in the earlier run, #6133). With both, q5 and q64 return Spark's rows and checksums.
- AQE is at its defaults for every engine. The earlier x86 run used a 128m advisory size and coalescePartitions.minPartitionNum=208 (deprecated in Spark 3.2+); its numbers are in docs/results.md.
- Comet Native Scan + VecRuntime returned Spark's row counts on all 103 queries and Spark's checksums on all but q65 (ties). It uses the same patched Comet build.
All queries
Seconds per query, the fastest engine in bold
| Query | Spark | VecRuntime | Comet | Mixed | VecRuntime speedup | Comet speedup | Mixed speedup | Note |
|---|---|---|---|---|---|---|---|---|
| q1 | 13.4 | 12.9 | 12.3 | 13.8 | 1.04x | 1.09x | 0.97x | |
| q2 | 54.9 | 52.0 | 41.4 | 49.5 | 1.06x | 1.33x | 1.11x | |
| q3 | 3.6 | 4.2 | 3.4 | 4.6 | 0.86x | 1.05x | 0.78x | |
| q4 | 92.3 | 86.4 | 46.4 | 84.1 | 1.07x | 1.99x | 1.10x | |
| q5 | 47.0 | 27.4 | 23.1 | 30.5 | 1.72x | 2.04x | 1.54x | |
| q6 | 10.1 | 3.9 | 2.3 | 6.3 | 2.60x | 4.43x | 1.60x | |
| q7 | 6.6 | 7.1 | 4.8 | 7.5 | 0.93x | 1.39x | 0.88x | |
| q8 | 7.0 | 3.8 | 3.4 | 4.3 | 1.84x | 2.08x | 1.64x | |
| q9 | 88.1 | 87.1 | 60.1 | 65.4 | 1.01x | 1.47x | 1.35x | |
| q10 | 8.3 | 5.9 | 5.0 | 6.8 | 1.41x | 1.64x | 1.21x | |
| q11 | 42.2 | 48.2 | 27.4 | 46.3 | 0.88x | 1.54x | 0.91x | |
| q12 | 2.2 | 2.9 | 1.6 | 2.4 | 0.76x | 1.42x | 0.91x | |
| q13 | 8.3 | 8.0 | 5.3 | 6.3 | 1.04x | 1.57x | 1.33x | |
| q14a | 99.8 | 74.6 | 64.2 | 69.7 | 1.34x | 1.55x | 1.43x | |
| q14b | 93.7 | 67.6 | 60.5 | 63.6 | 1.39x | 1.55x | 1.47x | |
| q15 | 8.6 | 3.6 | 3.6 | 5.3 | 2.35x | 2.38x | 1.61x | |
| q16 | 35.1 | 26.6 | 22.5 | 21.1 | 1.32x | 1.56x | 1.66x | |
| q17 | 12.7 | 7.3 | 8.8 | 7.2 | 1.73x | 1.44x | 1.76x | |
| q18 | 9.2 | 12.4 | 4.7 | 9.4 | 0.74x | 1.95x | 0.98x | |
| q19 | 4.7 | 3.2 | 2.3 | 2.6 | 1.45x | 2.06x | 1.79x | |
| q20 | 2.4 | 2.2 | 1.6 | 2.0 | 1.05x | 1.51x | 1.18x | |
| q21 | 1.8 | 1.9 | 0.8 | 1.5 | 0.93x | 2.22x | 1.21x | |
| q22 | 8.4 | 7.9 | 3.7 | 6.8 | 1.07x | 2.25x | 1.24x | |
| q23a | 201.2 | 106.9 | 104.2 | 111.3 | 1.88x | 1.93x | 1.81x | |
| q23b | 281.7 | 117.7 | 123.5 | 119.4 | 2.39x | 2.28x | 2.36x | |
| q24a | 104.5 | 102.6 | 92.3 | 100.1 | 1.02x | 1.13x | 1.04x | |
| q24b | 100.6 | 105.6 | 86.6 | 103.7 | 0.95x | 1.16x | 0.97x | |
| q25 | 9.7 | 9.7 | 6.2 | 6.2 | 1.00x | 1.57x | 1.58x | |
| q26 | 4.0 | 3.6 | 3.1 | 3.8 | 1.13x | 1.31x | 1.05x | |
| q27 | 6.4 | 5.8 | 5.0 | 5.9 | 1.12x | 1.29x | 1.09x | |
| q28 | 110.6 | 115.6 | 84.6 | 82.5 | 0.96x | 1.31x | 1.34x | |
| q29 | 34.3 | 9.8 | 15.6 | 9.2 | 3.49x | 2.20x | 3.72x | |
| q30 | 18.3 | 14.7 | 11.9 | 15.1 | 1.25x | 1.54x | 1.21x | |
| q31 | 14.4 | 11.2 | 11.8 | 10.8 | 1.28x | 1.22x | 1.33x | |
| q32 | 1.5 | 1.3 | 2.4 | 1.3 | 1.16x | 0.61x | 1.15x | |
| q33 | 4.1 | 2.7 | 2.2 | 2.7 | 1.52x | 1.83x | 1.49x | |
| q34 | 6.6 | 4.6 | 3.7 | 4.0 | 1.44x | 1.78x | 1.63x | |
| q35 | 20.7 | 11.6 | 11.2 | 11.8 | 1.78x | 1.85x | 1.76x | |
| q36 | 5.4 | 6.7 | 5.1 | 6.4 | 0.81x | 1.07x | 0.85x | |
| q37 | 8.5 | 8.0 | 6.9 | 8.5 | 1.06x | 1.23x | 1.00x | |
| q38 | 30.7 | 22.3 | 15.1 | 23.3 | 1.38x | 2.03x | 1.32x | |
| q39a | 5.9 | 4.7 | 3.5 | 6.7 | 1.25x | 1.68x | 0.87x | |
| q39b | 5.3 | 4.3 | 3.3 | 4.6 | 1.24x | 1.61x | 1.17x | |
| q40 | 10.8 | 10.6 | 10.1 | 9.2 | 1.03x | 1.07x | 1.18x | |
| q41 | 0.9 | 0.5 | 0.4 | 0.5 | 1.60x | 1.93x | 1.75x | |
| q42 | 1.6 | 1.3 | 1.5 | 1.6 | 1.23x | 1.08x | 1.00x | |
| q43 | 5.2 | 5.2 | 3.7 | 4.2 | 0.99x | 1.39x | 1.22x | |
| q44 | 34.6 | 33.9 | 26.9 | 26.5 | 1.02x | 1.29x | 1.31x | |
| q45 | 7.6 | 4.0 | 5.1 | 3.8 | 1.92x | 1.49x | 2.01x | |
| q46 | 7.7 | 7.7 | 6.1 | 6.7 | 1.00x | 1.25x | 1.14x | |
| q47 | 12.0 | 12.1 | 9.5 | 10.9 | 0.99x | 1.26x | 1.11x | |
| q48 | 7.9 | 6.2 | 4.8 | 4.6 | 1.27x | 1.64x | 1.71x | |
| q49 | 45.1 | 43.8 | 47.0 | 48.3 | 1.03x | 0.96x | 0.93x | |
| q50 | 66.8 | 38.4 | 47.4 | 27.9 | 1.74x | 1.41x | 2.39x | |
| q51 | 24.6 | 15.2 | 12.1 | 14.8 | 1.62x | 2.03x | 1.67x | |
| q52 | 1.5 | 1.1 | 1.1 | 1.1 | 1.38x | 1.39x | 1.39x | |
| q53 | 4.5 | 4.3 | 3.7 | 3.7 | 1.04x | 1.21x | 1.23x | |
| q54 | 8.0 | 4.0 | 4.3 | 4.5 | 2.02x | 1.85x | 1.76x | |
| q55 | 2.1 | 1.6 | 2.2 | 1.7 | 1.27x | 0.95x | 1.21x | |
| q56 | 3.9 | 2.2 | 1.9 | 2.1 | 1.79x | 2.05x | 1.90x | |
| q57 | 7.4 | 6.5 | 4.7 | 6.5 | 1.14x | 1.59x | 1.15x | |
| q58 | 3.7 | 2.4 | 2.0 | 2.4 | 1.51x | 1.81x | 1.50x | |
| q59 | 32.1 | 30.0 | 28.2 | 28.4 | 1.07x | 1.14x | 1.13x | |
| q60 | 4.1 | 2.7 | 2.2 | 2.8 | 1.50x | 1.84x | 1.46x | |
| q61 | 5.2 | 3.3 | 2.6 | 3.1 | 1.57x | 2.01x | 1.68x | |
| q62 | 24.4 | 24.9 | 26.1 | 26.3 | 0.98x | 0.94x | 0.93x | |
| q63 | 4.5 | 4.6 | 3.8 | 4.2 | 0.99x | 1.19x | 1.08x | |
| q64 | 92.7 | 48.6 | 63.8 | 50.7 | 1.91x | 1.45x | 1.83x | |
| q65 | 28.6 | 22.9 | 13.9 | 21.3 | 1.25x | 2.06x | 1.35x | ties |
| q66 | 10.0 | 9.8 | 10.0 | 13.1 | 1.02x | 1.00x | 0.76x | |
| q67 | 126.4 | 66.8 | 55.0 | 68.2 | 1.89x | 2.30x | 1.85x | |
| q68 | 6.9 | 3.6 | 3.8 | 3.1 | 1.93x | 1.83x | 2.22x | |
| q69 | 6.8 | 3.8 | 4.4 | 3.9 | 1.82x | 1.54x | 1.77x | |
| q70 | 11.1 | 8.3 | 7.7 | 8.7 | 1.34x | 1.44x | 1.28x | |
| q71 | 3.2 | 2.6 | 3.7 | 2.8 | 1.26x | 0.88x | 1.17x | |
| q72 | 37.3 | 31.1 | 35.3 | 32.1 | 1.20x | 1.06x | 1.16x | |
| q73 | 5.7 | 3.1 | 2.6 | 2.5 | 1.83x | 2.22x | 2.27x | |
| q74 | 45.3 | 32.2 | 26.9 | 33.8 | 1.41x | 1.68x | 1.34x | |
| q75 | 75.1 | 67.9 | 73.0 | 72.6 | 1.11x | 1.03x | 1.03x | |
| q76 | 42.4 | 42.2 | 43.9 | 42.5 | 1.00x | 0.96x | 1.00x | |
| q77 | 2.4 | 2.0 | 2.6 | 2.2 | 1.22x | 0.93x | 1.10x | |
| q78 | 117.8 | 82.9 | 75.6 | 85.3 | 1.42x | 1.56x | 1.38x | |
| q79 | 6.0 | 4.9 | 3.7 | 5.2 | 1.22x | 1.60x | 1.15x | |
| q80 | 50.0 | 38.8 | 42.0 | 39.3 | 1.29x | 1.19x | 1.27x | |
| q81 | 20.8 | 10.1 | 8.5 | 10.0 | 2.05x | 2.45x | 2.09x | |
| q82 | 19.1 | 16.4 | 14.6 | 15.3 | 1.16x | 1.30x | 1.24x | |
| q83 | 1.7 | 1.4 | 1.3 | 4.5 | 1.22x | 1.35x | 0.38x | |
| q84 | 20.6 | 17.4 | 17.3 | 20.3 | 1.18x | 1.19x | 1.01x | |
| q85 | 22.5 | 19.5 | 17.0 | 16.8 | 1.15x | 1.32x | 1.34x | |
| q86 | 5.8 | 4.9 | 4.3 | 4.1 | 1.18x | 1.36x | 1.40x | |
| q87 | 32.1 | 17.7 | 12.3 | 20.7 | 1.81x | 2.60x | 1.55x | |
| q88 | 119.1 | 111.2 | 96.5 | 97.1 | 1.07x | 1.23x | 1.23x | |
| q89 | 5.5 | 5.1 | 4.5 | 4.5 | 1.08x | 1.21x | 1.20x | |
| q90 | 42.0 | 34.9 | 33.5 | 35.2 | 1.20x | 1.26x | 1.19x | |
| q91 | 3.8 | 2.4 | 2.3 | 2.0 | 1.59x | 1.68x | 1.86x | |
| q92 | 2.0 | 1.5 | 1.7 | 1.5 | 1.35x | 1.19x | 1.36x | |
| q93 | 139.3 | 57.0 | 85.9 | 52.4 | 2.44x | 1.62x | 2.66x | |
| q94 | 66.3 | 50.7 | 56.2 | 53.9 | 1.31x | 1.18x | 1.23x | |
| q95 | 115.4 | 62.3 | 52.9 | 57.1 | 1.85x | 2.18x | 2.02x | |
| q96 | 19.8 | 15.1 | 13.7 | 13.4 | 1.31x | 1.45x | 1.48x | |
| q97 | 35.7 | 12.7 | 12.4 | 13.8 | 2.81x | 2.88x | 2.59x | |
| q98 | 2.9 | 2.4 | 1.7 | 2.1 | 1.19x | 1.73x | 1.37x | |
| q99 | 10.1 | 12.3 | 8.5 | 11.9 | 0.82x | 1.18x | 0.85x |
Running the benchmark
The cluster runner, the Spark-on-Kubernetes manifests, the image and the data generation are in
the benchmark runner's README: run-matrix.sh renders a SparkApplication per engine configuration
(spark, vector-shuffle, comet, ...) and writes one JSON-lines result file per run; this page is rendered from three of them by
benchmarks/scripts/render-benchmark-page.py.
TPC-DS is a benchmark of the Transaction Processing Performance Council; these results are not audited TPC results and are not comparable to published TPC-DS results. Times are the median of one measured iteration per query on the cluster described above; run-to-run variation on the heavy queries is a few percent.