This is an automated email from the ASF dual-hosted git repository.

github-actions[bot] pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/datafusion-comet.git


The following commit(s) were added to refs/heads/asf-site by this push:
     new 8d380c85c7 Publish built docs triggered by 
cf639fdec71e0337b42bf0068adbb3d1813edde3
8d380c85c7 is described below

commit 8d380c85c722525d5eb7a531e97ccd48ed6b5877
Author: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
AuthorDate: Sat Sep 12 22:47:26 2026 +0000

    Publish built docs triggered by cf639fdec71e0337b42bf0068adbb3d1813edde3
---
 _sources/user-guide/latest/tuning.md.txt | 40 ++++++++++++++++++++++++++++++++
 searchindex.js                           |  2 +-
 user-guide/latest/tuning.html            | 34 +++++++++++++++++++++++++++
 3 files changed, 75 insertions(+), 1 deletion(-)

diff --git a/_sources/user-guide/latest/tuning.md.txt 
b/_sources/user-guide/latest/tuning.md.txt
index ceec8b1a15..25b805d1cc 100644
--- a/_sources/user-guide/latest/tuning.md.txt
+++ b/_sources/user-guide/latest/tuning.md.txt
@@ -31,6 +31,46 @@ It is recommended that `COMET_WORKER_THREADS` be set to the 
number of executor c
 in some environments, such as Kubernetes, where the number of cores allocated 
to a pod will already be equal to the
 number of executor cores.
 
+## Adaptive Partial Aggregation
+
+For high-cardinality grouping, Comet can bypass partial hash aggregation when 
it is not
+reducing the number of rows enough. This currently applies only to fused 
native shuffle-writer
+plans whose partial aggregates are grouping-only or single-argument `COUNT`. 
Low-cardinality
+inputs continue to aggregate normally. The SQL metric `rows bypassing partial 
aggregation`
+shows whether skipping occurred.
+
+Eligibility is conservative for the whole fused native plan: any unsupported 
partial accumulator,
+Spark `PartialMerge`, or mixed-mode aggregate disables skipping in that plan. 
Multi-argument
+`COUNT` and other accumulators are not admitted. Distribution-required 
grouping-only stages
+still fully deduplicate, and non-native-shuffle plans retain ordinary 
aggregation.
+The DataFusion testing configuration override does not bypass these safety 
checks.
+
+DataFusion 55 defaults to probing after 100,000 input rows per partial 
aggregation
+partition and skipping when the number of groups divided by input rows exceeds 
`0.8`.
+To experiment with these thresholds, enable 
`spark.comet.exec.respectDataFusionConfigs`,
+a development and testing option that defaults to `false`. For example, the 
following
+SQL settings pass through the default threshold values, which you can adjust:
+
+```sql
+SET spark.comet.exec.respectDataFusionConfigs=true;
+SET 
spark.comet.datafusion.execution.skip_partial_aggregation_probe_rows_threshold=100000;
+SET 
spark.comet.datafusion.execution.skip_partial_aggregation_probe_ratio_threshold=0.8;
+```
+
+A lower row threshold allows an earlier decision; a lower ratio threshold makes
+skipping more likely. Skipping can increase the number of partial states 
emitted
+and the amount of shuffle data, so measure the effect on your workload.
+
+To disable skipping, keep `spark.comet.exec.respectDataFusionConfigs=true` and 
set
+the ratio threshold above the maximum possible groups/input-rows ratio:
+
+```sql
+SET 
spark.comet.datafusion.execution.skip_partial_aggregation_probe_ratio_threshold=1.1;
+```
+
+These settings only tune eligible plans. Unsupported accumulators and modes 
remain
+disabled even when configuration overrides are enabled.
+
 ## Memory Tuning
 
 It is necessary to specify how much memory Comet can use in addition to memory 
already allocated to Spark. In some
diff --git a/searchindex.js b/searchindex.js
index 432c1aa640..601b83f9de 100644
--- a/searchindex.js
+++ b/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"alltitles": {"!": [[56, "id1"]], "%": [[54, "id1"]], "&": 
[[44, "id1"]], "*": [[54, "id2"]], "+": [[54, "id3"]], "-": [[54, "id4"]], "/": 
[[54, "id5"]], "1. Format Your Code": [[41, "format-your-code"]], "1. Install 
Comet": [[62, "install-comet"], [72, "install-comet"]], "1. Native Operators 
(nativeExecs map)": [[28, "native-operators-nativeexecs-map"]], "2. Build and 
Verify": [[41, "build-and-verify"]], "2. Clone Iceberg and Apply Diff": [[62, 
"clone-iceberg-and-apply- [...]
\ No newline at end of file
+Search.setIndex({"alltitles": {"!": [[56, "id1"]], "%": [[54, "id1"]], "&": 
[[44, "id1"]], "*": [[54, "id2"]], "+": [[54, "id3"]], "-": [[54, "id4"]], "/": 
[[54, "id5"]], "1. Format Your Code": [[41, "format-your-code"]], "1. Install 
Comet": [[62, "install-comet"], [72, "install-comet"]], "1. Native Operators 
(nativeExecs map)": [[28, "native-operators-nativeexecs-map"]], "2. Build and 
Verify": [[41, "build-and-verify"]], "2. Clone Iceberg and Apply Diff": [[62, 
"clone-iceberg-and-apply- [...]
\ No newline at end of file
diff --git a/user-guide/latest/tuning.html b/user-guide/latest/tuning.html
index 02122ec67e..2c137713bd 100644
--- a/user-guide/latest/tuning.html
+++ b/user-guide/latest/tuning.html
@@ -786,6 +786,39 @@ and <code class="docutils literal notranslate"><span 
class="pre">COMET_MAX_BLOCK
 in some environments, such as Kubernetes, where the number of cores allocated 
to a pod will already be equal to the
 number of executor cores.</p>
 </section>
+<section id="adaptive-partial-aggregation">
+<h2>Adaptive Partial Aggregation<a class="headerlink" 
href="#adaptive-partial-aggregation" title="Link to this heading">#</a></h2>
+<p>For high-cardinality grouping, Comet can bypass partial hash aggregation 
when it is not
+reducing the number of rows enough. This currently applies only to fused 
native shuffle-writer
+plans whose partial aggregates are grouping-only or single-argument <code 
class="docutils literal notranslate"><span class="pre">COUNT</span></code>. 
Low-cardinality
+inputs continue to aggregate normally. The SQL metric <code class="docutils 
literal notranslate"><span class="pre">rows</span> <span 
class="pre">bypassing</span> <span class="pre">partial</span> <span 
class="pre">aggregation</span></code>
+shows whether skipping occurred.</p>
+<p>Eligibility is conservative for the whole fused native plan: any 
unsupported partial accumulator,
+Spark <code class="docutils literal notranslate"><span 
class="pre">PartialMerge</span></code>, or mixed-mode aggregate disables 
skipping in that plan. Multi-argument
+<code class="docutils literal notranslate"><span 
class="pre">COUNT</span></code> and other accumulators are not admitted. 
Distribution-required grouping-only stages
+still fully deduplicate, and non-native-shuffle plans retain ordinary 
aggregation.
+The DataFusion testing configuration override does not bypass these safety 
checks.</p>
+<p>DataFusion 55 defaults to probing after 100,000 input rows per partial 
aggregation
+partition and skipping when the number of groups divided by input rows exceeds 
<code class="docutils literal notranslate"><span class="pre">0.8</span></code>.
+To experiment with these thresholds, enable <code class="docutils literal 
notranslate"><span 
class="pre">spark.comet.exec.respectDataFusionConfigs</span></code>,
+a development and testing option that defaults to <code class="docutils 
literal notranslate"><span class="pre">false</span></code>. For example, the 
following
+SQL settings pass through the default threshold values, which you can 
adjust:</p>
+<div class="highlight-sql notranslate"><div 
class="highlight"><pre><span></span><span class="k">SET</span><span class="w"> 
</span><span class="n">spark</span><span class="p">.</span><span 
class="n">comet</span><span class="p">.</span><span class="k">exec</span><span 
class="p">.</span><span class="n">respectDataFusionConfigs</span><span 
class="o">=</span><span class="k">true</span><span class="p">;</span>
+<span class="k">SET</span><span class="w"> </span><span 
class="n">spark</span><span class="p">.</span><span class="n">comet</span><span 
class="p">.</span><span class="n">datafusion</span><span 
class="p">.</span><span class="n">execution</span><span class="p">.</span><span 
class="n">skip_partial_aggregation_probe_rows_threshold</span><span 
class="o">=</span><span class="mi">100000</span><span class="p">;</span>
+<span class="k">SET</span><span class="w"> </span><span 
class="n">spark</span><span class="p">.</span><span class="n">comet</span><span 
class="p">.</span><span class="n">datafusion</span><span 
class="p">.</span><span class="n">execution</span><span class="p">.</span><span 
class="n">skip_partial_aggregation_probe_ratio_threshold</span><span 
class="o">=</span><span class="mi">0</span><span class="p">.</span><span 
class="mi">8</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>A lower row threshold allows an earlier decision; a lower ratio threshold 
makes
+skipping more likely. Skipping can increase the number of partial states 
emitted
+and the amount of shuffle data, so measure the effect on your workload.</p>
+<p>To disable skipping, keep <code class="docutils literal notranslate"><span 
class="pre">spark.comet.exec.respectDataFusionConfigs=true</span></code> and set
+the ratio threshold above the maximum possible groups/input-rows ratio:</p>
+<div class="highlight-sql notranslate"><div 
class="highlight"><pre><span></span><span class="k">SET</span><span class="w"> 
</span><span class="n">spark</span><span class="p">.</span><span 
class="n">comet</span><span class="p">.</span><span 
class="n">datafusion</span><span class="p">.</span><span 
class="n">execution</span><span class="p">.</span><span 
class="n">skip_partial_aggregation_probe_ratio_threshold</span><span 
class="o">=</span><span class="mi">1</span><span class="p">.</span><sp [...]
+</pre></div>
+</div>
+<p>These settings only tune eligible plans. Unsupported accumulators and modes 
remain
+disabled even when configuration overrides are enabled.</p>
+</section>
 <section id="memory-tuning">
 <h2>Memory Tuning<a class="headerlink" href="#memory-tuning" title="Link to 
this heading">#</a></h2>
 <p>It is necessary to specify how much memory Comet can use in addition to 
memory already allocated to Spark. In some
@@ -1160,6 +1193,7 @@ fallback to Spark works, see <a class="reference 
internal" href="understanding-c
   <nav class="bd-toc-nav page-toc" 
aria-labelledby="pst-page-navigation-heading-2">
     <ul class="visible nav section-nav flex-column">
 <li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" 
href="#configuring-tokio-runtime">Configuring Tokio Runtime</a></li>
+<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" 
href="#adaptive-partial-aggregation">Adaptive Partial Aggregation</a></li>
 <li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" 
href="#memory-tuning">Memory Tuning</a><ul class="nav section-nav flex-column">
 <li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" 
href="#configuring-comet-memory">Configuring Comet Memory</a></li>
 <li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" 
href="#determining-how-much-memory-to-allocate">Determining How Much Memory to 
Allocate</a></li>


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to