[GLUTEN][VL] Defer Delta deletion vector reads to executors - #12836
[GLUTEN][VL] Defer Delta deletion vector reads to executors#12836malinjawi wants to merge 3 commits into
Conversation
|
Run Gluten Clickhouse CI on x86 |
|
Run Gluten Clickhouse CI |
|
Run Gluten Clickhouse CI on x86 |
1 similar comment
|
Run Gluten Clickhouse CI on x86 |
bb950e3 to
90aea76
Compare
|
Run Gluten Clickhouse CI on x86 |
|
Run Gluten Clickhouse CI |
90aea76 to
62cd99c
Compare
|
Run Gluten Clickhouse CI on x86 |
|
Run Gluten Clickhouse CI |
62cd99c to
85b52e4
Compare
|
Run Gluten Clickhouse CI on x86 |
|
Run Gluten Clickhouse CI |
85b52e4 to
436f32a
Compare
|
Run Gluten Clickhouse CI on x86 |
|
Run Gluten Clickhouse CI |
1 similar comment
|
Run Gluten Clickhouse CI |
436f32a to
372f498
Compare
|
Run Gluten Clickhouse CI on x86 |
|
Run Gluten Clickhouse CI |
|
Are there any circumstances that could benefit from driver loading? If not, the legacy implementation should be removed. |
|
@marin-ma I checked the remaining cases and do not see a normal workload that benefits from loading on-disk DVs on the driver. The only theoretical differences are earlier failure for a missing/corrupt sidecar and avoiding a repeated DV request on a retried or speculative task; neither justifies preserving the serial planning path. The standard Delta fallback already reads DVs on executors. I will remove the rollback config and the legacy on-disk driver branch, keep inline DVs eager because their bytes are already in Delta metadata, and retain |
|
Run Gluten Clickhouse CI on x86 |
1 similar comment
|
Run Gluten Clickhouse CI on x86 |
What changes are proposed in this pull request?
Native Delta scans currently load every on-disk deletion vector while the driver builds file splits. With 2,461 S3-backed DVs, this kept executors idle for about two minutes before the first Spark job.
This PR passes each DV's absolute path, offset, size, and Hadoop configuration with the Spark partition, then loads the payload during executor-side split serialization.
TaskContextbecomes available.The production DV data-path change is confined to the JVM handoff. The PR also adds metrics, tests, documentation, and required CI baseline maintenance.
spark.gluten.sql.columnar.filescan=falseremains the broad fallback that disables native file scan. Direct Velox range reads are handled separately in #12867.How was this patch tested?
git diff --check.Targeted DV reads
A Spark 3.5.4 validation build retained a temporary legacy switch solely to compare both paths from the same build. PR A used executor deferral with native range reading disabled; Legacy used driver loading with native range reading disabled. Native file scan and metadata row index were enabled in both arms. The final PR does not publish the legacy driver-loading switch.
Each arm ran three times in balanced order against the same snapshot and resources.
count(*)sumThe combined physical value is the median of each run's
sum + grouped_sumtime. SQL-start-to-first-job delay fell from 114.7 s to 0.64 s forsum, and from 111.2 s to 0.38 s for groupedsum.The snapshot contained 2,461 DV-bearing files and 6,479,887,870 visible rows after applying DV cardinality 720,032,919. Every arm returned identical results.
Full Delta ingestion
A separate balanced three-round test processed all 24 TPC-DS SF2500 tables. Only
store_salescarried DVs; native writing, output settings, inputs, and resources were fixed.store_salesAll runs completed 24 of 24 tables with matching schemas, partitioning, Delta metrics, row statistics, and corresponding output row/file counts.
The claims are limited to these Spark 3.5.4 workloads: 12.55x for the two targeted physical DV scans and 15.52% for full ingestion. They do not cover a full query suite, DV creation, native writing, or Spark 4 performance.
Was this patch authored or co-authored using generative AI tooling?
Generated-by: IBM BOB