POC hash aggregate repartition subpartitions#23186
Conversation
86eb45e to
ce1b786
Compare
ce1b786 to
182c5b0
Compare
|
run benchmarks clickbench_partitioned |
|
🤖 Benchmark running (GKE) | trigger CPU Details (lscpu)Comparing final-aggr-with-lazily-materialize-poc (56181e3) to eaafba4 (merge-base) diff using: clickbench_partitioned File an issue against this benchmark runner |
|
🤖 Benchmark completed (GKE) | trigger Instance: CPU Details (lscpu)Details
Resource Usageclickbench_partitioned — base (merge-base)
clickbench_partitioned — branch
File an issue against this benchmark runner |
|
run benchmarks clickbench_partitioned |
|
🤖 Benchmark running (GKE) | trigger CPU Details (lscpu)Comparing final-aggr-with-lazily-materialize-poc (a8d2b6c) to eaafba4 (merge-base) diff using: clickbench_partitioned File an issue against this benchmark runner |
|
🤖 Benchmark completed (GKE) | trigger Instance: CPU Details (lscpu)Details
Resource Usageclickbench_partitioned — base (merge-base)
clickbench_partitioned — branch
File an issue against this benchmark runner |
|
run benchmarks clickbench_partitioned --query 32 |
|
🤖 Benchmark running (GKE) | trigger CPU Details (lscpu)Comparing final-aggr-with-lazily-materialize-poc (91738e3) to eaafba4 (merge-base) diff using: clickbench_partitioned File an issue against this benchmark runner |
|
🤖 Benchmark running (GKE) | trigger CPU Details (lscpu)Comparing final-aggr-with-lazily-materialize-poc (91738e3) to eaafba4 (merge-base) diff using: --query File an issue against this benchmark runner |
|
🤖 Benchmark running (GKE) | trigger CPU Details (lscpu)Comparing final-aggr-with-lazily-materialize-poc (91738e3) to eaafba4 (merge-base) diff using: 32 File an issue against this benchmark runner |
|
Benchmark for this request failed. Last 20 lines of output: Click to expandFile an issue against this benchmark runner |
|
Benchmark for this request failed. Last 20 lines of output: Click to expandFile an issue against this benchmark runner |
|
🤖 Benchmark completed (GKE) | trigger Instance: CPU Details (lscpu)Details
Resource Usageclickbench_partitioned — base (merge-base)
clickbench_partitioned — branch
File an issue against this benchmark runner |
|
run benchmarks clickbench_partitioned |
|
🤖 Benchmark running (GKE) | trigger CPU Details (lscpu)Comparing final-aggr-with-lazily-materialize-poc (91738e3) to eaafba4 (merge-base) diff using: clickbench_partitioned File an issue against this benchmark runner |
|
🤖 Benchmark completed (GKE) | trigger Instance: CPU Details (lscpu)Details
Resource Usageclickbench_partitioned — base (merge-base)
clickbench_partitioned — branch
File an issue against this benchmark runner |
ded7452 to
5792fea
Compare
|
run benchmarks clickbench_partitioned |
|
🤖 Benchmark running (GKE) | trigger CPU Details (lscpu)Comparing final-aggr-with-lazily-materialize-poc (5792fea) to eaafba4 (merge-base) diff using: clickbench_partitioned File an issue against this benchmark runner |
|
🤖 Benchmark completed (GKE) | trigger Instance: CPU Details (lscpu)Details
Resource Usageclickbench_partitioned — base (merge-base)
clickbench_partitioned — branch
File an issue against this benchmark runner |
|
run benchmarks clickbench_partitioned |
|
🤖 Benchmark running (GKE) | trigger CPU Details (lscpu)Comparing final-aggr-with-lazily-materialize-poc (36befa2) to eaafba4 (merge-base) diff using: clickbench_partitioned File an issue against this benchmark runner |
|
🤖 Benchmark completed (GKE) | trigger Instance: CPU Details (lscpu)Details
Resource Usageclickbench_partitioned — base (merge-base)
clickbench_partitioned — branch
File an issue against this benchmark runner |
|
run benchmarks clickbench_partitioned |
|
🤖 Benchmark running (GKE) | trigger CPU Details (lscpu)Comparing final-aggr-with-lazily-materialize-poc (a72327b) to eaafba4 (merge-base) diff using: clickbench_partitioned File an issue against this benchmark runner |
|
🤖 Benchmark completed (GKE) | trigger Instance: CPU Details (lscpu)Details
Resource Usageclickbench_partitioned — base (merge-base)
clickbench_partitioned — branch
File an issue against this benchmark runner |
|
run benchmarks clickbench_partitioned |
|
🤖 Benchmark running (GKE) | trigger CPU Details (lscpu)Comparing final-aggr-with-lazily-materialize-poc (a72327b) to eaafba4 (merge-base) diff using: clickbench_partitioned File an issue against this benchmark runner |
|
🤖 Benchmark completed (GKE) | trigger Instance: CPU Details (lscpu)Details
Resource Usageclickbench_partitioned — base (merge-base)
clickbench_partitioned — branch
File an issue against this benchmark runner |
Which issue does this PR close?
Rationale for this change
Final aggregation should receive reasonably sized batches that each belong to one relative aggregate partition. Building multi-batch group and accumulator APIs in final aggregation added substantial complexity without improving locality.
This version moves partition-aware batching into
RepartitionExec, where rows are already split by aggregate partition.What changes are included in this PR?
BatchCoalescerenum:Single(LimitedBatchCoalescer)for normal repartitioning.Partitioned(PartitionedLimitedBatchCoalescer)for aggregate repartitioning.LimitedBatchCoalescer.PartitionedLimitedBatchCoalescer::push_batch.LimitedBatchCoalescer.Are these changes tested?
cargo fmt --allcargo clippy --all-targets --all-features -- -D warningscargo test -p datafusion-physical-plan --lib: 1515 passed; the existingaggregates::tests::test_order_is_retained_when_spilling600-byte memory-pool test failed with an allocation error and also failed when rerun alone. It does not exercise this repartition path.Are there any user-facing changes?
No. This is an internal experimental optimization.