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-ballista.git
The following commit(s) were added to refs/heads/asf-site by this push:
new ad87a3cb6 Publish built docs triggered by
b55d1e99e6ddc1a30fd6672b7d23986a7060c7ab
ad87a3cb6 is described below
commit ad87a3cb60c307b9b65dc559b10a6a5cc42f5198
Author: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
AuthorDate: Wed Jul 22 18:13:15 2026 +0000
Publish built docs triggered by b55d1e99e6ddc1a30fd6672b7d23986a7060c7ab
---
_sources/user-guide/configs.md.txt | 87 +++++++++++--
searchindex.js | 2 +-
user-guide/configs.html | 242 +++++++++++++++++++++++++++++++++++--
3 files changed, 314 insertions(+), 17 deletions(-)
diff --git a/_sources/user-guide/configs.md.txt
b/_sources/user-guide/configs.md.txt
index 8bc7276f4..c40f1a582 100644
--- a/_sources/user-guide/configs.md.txt
+++ b/_sources/user-guide/configs.md.txt
@@ -19,6 +19,14 @@
# Configuration
+**The configuration tables on this page are generated** from the `ConfigEntry`
+definitions in `ballista/core/src/config.rs`. Anything between a pair of
+generated config reference markers is overwritten the next time the docs are
+regenerated, so do not hand-edit it. To change a setting's description, type,
or
+default, edit its `ConfigEntry` in `ballista/core/src/config.rs`, then run
+`./dev/update_config_docs.sh` and commit the regenerated file. Prose outside
the
+generated sections is hand-written and safe to edit normally.
+
## Ballista Configuration Settings
Configuring Ballista is quite similar to configuring DataFusion. Most settings
are identical, with only a few configurations specific to Ballista.
@@ -88,19 +96,84 @@ let expected = [
];
```
+### Session Settings
+
+The following keys can be set on a `SessionConfig`. Ballista also accepts all
+standard DataFusion settings.
+
+<!-- BEGIN GENERATED CONFIG REFERENCE
prefix=ballista.job.,ballista.standalone.,ballista.cache.,ballista.client.,ballista.optimizer.,ballista.planner.,ballista.scheduler.
-->
+
+<!-- prettier-ignore -->
+| key | type | default
| description
[...]
+| ------------------------------------------------------ | ------- |
----------------------------- |
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
[...]
+| ballista.cache.noop | Boolean | true
| Disable default cache node extension
[...]
+| ballista.client.grpc_connect_timeout_seconds | UInt64 | 20
| Connection timeout for gRPC client in seconds
[...]
+| ballista.client.grpc_http2_keepalive_interval_seconds | UInt64 | 300
| HTTP/2 keep-alive interval for gRPC client in seconds
[...]
+| ballista.client.grpc_max_message_size | UInt64 | 16777216
| Configuration for max message size in gRPC clients
[...]
+| ballista.client.grpc_tcp_keepalive_seconds | UInt64 | 3600
| TCP keep-alive interval for gRPC client in seconds
[...]
+| ballista.client.grpc_timeout_seconds | UInt64 | 20
| Request timeout for gRPC client in seconds
[...]
+| ballista.client.initial_connection_window_size | UInt64 | 67108864
| HTTP/2 initial connection-level flow-control window for
gRPC data-plane clients, in bytes. Should be >= the shuffle governor byte
budget so the governor, not the transport window, is the binding backpressure.
0 leaves the tonic default.
[...]
+| ballista.client.initial_stream_window_size | UInt64 | 16777216
| HTTP/2 initial stream-level flow-control window for gRPC
data-plane clients, in bytes. 0 leaves the tonic default.
[...]
+| ballista.client.io_retries_times | UInt16 | 3
| Number of retries for IO operations in the Ballista
client.
[...]
+| ballista.client.io_retry_wait_time_ms | UInt64 | 3000
| Wait time in milliseconds between IO retries in the
Ballista client.
[...]
+| ballista.client.pull | Boolean | false
| Should client employ pull or push job tracking. In pull
mode client will make a request to server in the loop, until job finishes. Pull
mode is kept for legacy clients.
[...]
+| ballista.client.use_tls | Boolean | false
| Should connection between client, scheduler, and
executors use TLS.
[...]
+| ballista.job.name | Utf8 | (none)
| Sets the job name that will appear in the web user
interface for any submitted jobs
[...]
+| ballista.optimizer.broadcast_join_threshold_bytes | UInt64 | 10485760
| Byte-size threshold below which a hash join's smaller
side is promoted to CollectLeft and lowered via the broadcast pattern. Governs
broadcast selection under both the static distributed planner and adaptive
query planning (AQE). Set to 0 to disable promotion.
[...]
+| ballista.optimizer.broadcast_join_threshold_rows | UInt64 | 1000000
| Row-count threshold below which a hash join's smaller
side is promoted to CollectLeft and lowered via the broadcast pattern, used as
a fallback when byte-size statistics are unavailable. Applies to adaptive query
planning (AQE). Set to 0 to disable promotion via the row-count path.
[...]
+| ballista.optimizer.hash_join_max_build_partition_bytes | UInt64 | 67108864
| Maximum per-partition hash-join build-side bytes for a
Partitioned hash join under AQE. A build partition larger than this falls back
to SortMergeJoin (spillable). Defaults to 64 MiB; 0 disables the check, which
makes AQE use a hash join regardless of build size.
[...]
+| ballista.planner.adaptive.enabled | Boolean | false
| Enables Adaptive Query Planning (EXPERIMENTAL)
[...]
+| ballista.planner.adaptive_join.enabled | Boolean | true
| Enables the AQE dynamic join-selection rule
(SelectJoinRule). When true (default), DynamicJoinSelectionExec nodes are
resolved to concrete HashJoin or CollectLeft join implementations at runtime.
Disable only for debugging.
[...]
+| ballista.planner.coalesce.enabled | Boolean | false
| Enables the AQE coalesce-shuffle-partitions rule.
Disabled by default — opt in when fewer/larger downstream tasks matter more
than parallelism.
[...]
+| ballista.planner.coalesce.merged_partition_factor | Float64 | 1.2
| Two adjacent partitions are merged when their combined
size is below target_partition_bytes times this factor. Mirrors Spark's legacy
coalesce semantics.
[...]
+| ballista.planner.coalesce.small_partition_factor | Float64 | 0.2
| A coalesced partition smaller than target_partition_bytes
times this factor counts as small and is merged into its neighbour. Mirrors
Spark's legacy coalesce semantics.
[...]
+| ballista.planner.coalesce.target_partition_bytes | UInt64 | 67108864
| Target post-coalesce partition size in bytes. Mirrors
Spark's advisoryPartitionSizeInBytes.
[...]
+| ballista.planner.propagate_empty.enabled | Boolean | true
| Enables the AQE propagate-empty-relation rule. Injects
EmptyExec into the plan where an input is known to be empty, such as one side
of a join, allowing downstream work to be skipped.
[...]
+| ballista.scheduler.max_partitions_per_task | UInt64 | 1
| Upper bound on the number of input partitions packed into
a single task's `partition_slice`. `1` (default) means one task per input
partition. Raise to enable multi-partition tasks (fewer tasks, parallel-sort /
parallel-join wins); `0` means unbounded — the scheduler fills each task up to
the executor's free vcore count. Does not apply to collapse stages, which must
pack their full pendin [...]
+| ballista.standalone.parallelism | UInt16 | number of
available CPU cores | Number of concurrent tasks a standalone in-process
executor will run.
[...]
+
+<!-- END GENERATED CONFIG REFERENCE -->
+
## Shuffle Settings
The following session-level keys control Ballista's shuffle behavior. See
the [tuning guide](tuning-guide.md#shuffle-implementation) for an
explanation of the sort-based shuffle writer.
-| key | type | default
| description
|
-| ------------------------------------------------------- | ------- |
--------- |
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
-| ballista.shuffle.max_concurrent_read_requests | UInt64 | 64
| Maximum number of concurrent fetch requests the shuffle reader will issue.
|
-| ballista.shuffle.force_remote_read | Boolean | false
| Forces the shuffle reader to fetch every partition through Arrow Flight,
even when the data is local. Intended for testing.
|
-| ballista.shuffle.remote_read_prefer_flight | Boolean | false
| For remote reads, prefer the Arrow Flight reader over the block reader. The
block reader is generally faster.
|
-| ballista.shuffle.sort_based.batch_size | UInt64 | 8192
| Target row count when coalescing buffered batches before they are written or
spilled.
|
-| ballista.shuffle.sort_based.memory_limit_per_task_bytes | UInt64 |
268435456 | Per-task buffered-bytes budget at which the sort-based writer
spills to disk (256 MiB default), counted independently of the runtime memory
pool. Set to `0` to disable the per-task budget and spill only under
memory-pool pressure — safe only with a bounded memory pool, otherwise the
writer never spills and may run out of memory. |
+<!-- BEGIN GENERATED CONFIG REFERENCE prefix=ballista.shuffle. -->
+
+<!-- prettier-ignore -->
+| key | type | default
| description
[...]
+| -------------------------------------------------------- | ------- |
--------- |
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
[...]
+| ballista.shuffle.compression.codec | Utf8 | lz4
| Compression codec specification used in the shuffle process. Possible
values: none, lz4, zstd. Defaults to lz4 to preserve current behaviour
[...]
+| ballista.shuffle.force_remote_read | Boolean | false
| Forces the shuffle reader to always read partitions via the Arrow Flight
client, even when partitions are local to the node.
[...]
+| ballista.shuffle.max_concurrent_read_requests | UInt64 | 64
| Maximum concurrent requests shuffle reader can process
[...]
+| ballista.shuffle.reader.default_block_size_bytes | UInt64 | 1048576
| Assumed per-partition byte size charged to the shuffle governor when
partition stats carry no byte count.
[...]
+| ballista.shuffle.reader.max_blocks_in_flight_per_address | UInt64 | 128
| Reduce-side shuffle governor: maximum concurrent in-flight partition
fetches to a single executor address.
[...]
+| ballista.shuffle.reader.max_bytes_in_flight | UInt64 |
50331648 | Reduce-side shuffle governor: maximum total in-flight bytes across
concurrent remote partition fetches. Mirrors Spark's
spark.reducer.maxSizeInFlight. Values above 4 GiB are clamped to 4 GiB (u32
semaphore limit).
[...]
+| ballista.shuffle.remote_read_prefer_flight | Boolean | false
| Forces the shuffle reader to use flight reader instead of block reader for
remote read. Block reader usually has better performance and resource
utilization
[...]
+| ballista.shuffle.sort_based.batch_size | UInt64 | 8192
| Target batch size in rows for coalescing small batches in sort shuffle
[...]
+| ballista.shuffle.sort_based.memory_limit_per_task_bytes | UInt64 |
268435456 | Per-task buffered-bytes budget at which the sort shuffle writer
spills its in-memory batches to disk. Counted independently of the runtime
memory pool, so spilling kicks in even when the pool is unbounded. Total
worst-case sort shuffle memory per executor is approximately vcores * this
value. Set to 0 to disable the per-task budget and rely solely on runtime
memory-pool pressure to trigger spilling; this i [...]
+| ballista.shuffle.writer_channel_capacity | UInt32 | 8
| Bounded channel capacity for async-to-blocking I/O bridge in shuffle writer
[...]
+
+<!-- END GENERATED CONFIG REFERENCE -->
+
+## Testing and Fault Injection
+
+These settings drive chaos-monkey fault injection and exist for robustness
+testing. They are not intended for production use.
+
+<!-- BEGIN GENERATED CONFIG REFERENCE prefix=ballista.testing. -->
+
+<!-- prettier-ignore -->
+| key | type | default |
description
|
+| -------------------------------------------- | ------- | --------- |
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
+| ballista.testing.chaos_execution.enabled | Boolean | false | Enables
chaos-monkey execution injection for robustness testing. When true, ChaosExec
is inserted at a random point in the plan once per optimize call.
|
+| ballista.testing.chaos_execution.fault_type | Utf8 | transient | Fault
type injected by chaos-monkey execution. "transient": IoError (retryable);
"fatal": Execution error (non-retryable); "panic": panics the task thread;
"delay" or "delay:N": sleeps N ms per batch with no error (default N=1). |
+| ballista.testing.chaos_execution.probability | Float64 | 0.25 | Failure
probability (0.0–1.0) passed to ChaosExec when chaos execution is enabled.
|
+| ballista.testing.chaos_execution.seed | Utf8 | (empty) |
Optional u64 seed for the chaos RNG. Empty string (default) means
non-deterministic; set to a numeric value to get reproducible fault injection
across runs.
|
+
+<!-- END GENERATED CONFIG REFERENCE -->
## Ballista Scheduler Configuration Settings
diff --git a/searchindex.js b/searchindex.js
index e421c7004..9c8447e7b 100644
--- a/searchindex.js
+++ b/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"alltitles":{"AQE join behavior
(opt-in)":[[27,"aqe-join-behavior-opt-in"]],"Adaptive Query Execution
(AQE)":[[21,"adaptive-query-execution-aqe"]],"Adaptive Query Execution
(Experimental)":[[50,"adaptive-query-execution-experimental"]],"Adding a
persona":[[25,"adding-a-persona"]],"Aggregate
Functions":[[49,"aggregate-functions"]],"Apache DataFusion
Ballista":[[26,null]],"Apache DataFusion Ballista 0.10.0
Changelog":[[0,null]],"Apache DataFusion Ballista 0.11.0 Changelog" [...]
\ No newline at end of file
+Search.setIndex({"alltitles":{"AQE join behavior
(opt-in)":[[27,"aqe-join-behavior-opt-in"]],"Adaptive Query Execution
(AQE)":[[21,"adaptive-query-execution-aqe"]],"Adaptive Query Execution
(Experimental)":[[50,"adaptive-query-execution-experimental"]],"Adding a
persona":[[25,"adding-a-persona"]],"Aggregate
Functions":[[49,"aggregate-functions"]],"Apache DataFusion
Ballista":[[26,null]],"Apache DataFusion Ballista 0.10.0
Changelog":[[0,null]],"Apache DataFusion Ballista 0.11.0 Changelog" [...]
\ No newline at end of file
diff --git a/user-guide/configs.html b/user-guide/configs.html
index 20a94b68d..f54ebc098 100644
--- a/user-guide/configs.html
+++ b/user-guide/configs.html
@@ -390,6 +390,13 @@
-->
<section id="configuration">
<h1>Configuration<a class="headerlink" href="#configuration" title="Link to
this heading">#</a></h1>
+<p><strong>The configuration tables on this page are generated</strong> from
the <code class="docutils literal notranslate"><span
class="pre">ConfigEntry</span></code>
+definitions in <code class="docutils literal notranslate"><span
class="pre">ballista/core/src/config.rs</span></code>. Anything between a pair
of
+generated config reference markers is overwritten the next time the docs are
+regenerated, so do not hand-edit it. To change a setting’s description, type,
or
+default, edit its <code class="docutils literal notranslate"><span
class="pre">ConfigEntry</span></code> in <code class="docutils literal
notranslate"><span class="pre">ballista/core/src/config.rs</span></code>, then
run
+<code class="docutils literal notranslate"><span
class="pre">./dev/update_config_docs.sh</span></code> and commit the
regenerated file. Prose outside the
+generated sections is hand-written and safe to edit normally.</p>
<section id="ballista-configuration-settings">
<h2>Ballista Configuration Settings<a class="headerlink"
href="#ballista-configuration-settings" title="Link to this heading">#</a></h2>
<p>Configuring Ballista is quite similar to configuring DataFusion. Most
settings are identical, with only a few configurations specific to Ballista.</p>
@@ -449,12 +456,159 @@
<span class="p">];</span>
</pre></div>
</div>
+<section id="session-settings">
+<h3>Session Settings<a class="headerlink" href="#session-settings" title="Link
to this heading">#</a></h3>
+<p>The following keys can be set on a <code class="docutils literal
notranslate"><span class="pre">SessionConfig</span></code>. Ballista also
accepts all
+standard DataFusion settings.</p>
+<!-- BEGIN GENERATED CONFIG REFERENCE
prefix=ballista.job.,ballista.standalone.,ballista.cache.,ballista.client.,ballista.optimizer.,ballista.planner.,ballista.scheduler.
-->
+<!-- prettier-ignore -->
+<div class="pst-scrollable-table-container"><table class="table">
+<thead>
+<tr class="row-odd"><th class="head"><p>key</p></th>
+<th class="head"><p>type</p></th>
+<th class="head"><p>default</p></th>
+<th class="head"><p>description</p></th>
+</tr>
+</thead>
+<tbody>
+<tr class="row-even"><td><p>ballista.cache.noop</p></td>
+<td><p>Boolean</p></td>
+<td><p>true</p></td>
+<td><p>Disable default cache node extension</p></td>
+</tr>
+<tr
class="row-odd"><td><p>ballista.client.grpc_connect_timeout_seconds</p></td>
+<td><p>UInt64</p></td>
+<td><p>20</p></td>
+<td><p>Connection timeout for gRPC client in seconds</p></td>
+</tr>
+<tr
class="row-even"><td><p>ballista.client.grpc_http2_keepalive_interval_seconds</p></td>
+<td><p>UInt64</p></td>
+<td><p>300</p></td>
+<td><p>HTTP/2 keep-alive interval for gRPC client in seconds</p></td>
+</tr>
+<tr class="row-odd"><td><p>ballista.client.grpc_max_message_size</p></td>
+<td><p>UInt64</p></td>
+<td><p>16777216</p></td>
+<td><p>Configuration for max message size in gRPC clients</p></td>
+</tr>
+<tr class="row-even"><td><p>ballista.client.grpc_tcp_keepalive_seconds</p></td>
+<td><p>UInt64</p></td>
+<td><p>3600</p></td>
+<td><p>TCP keep-alive interval for gRPC client in seconds</p></td>
+</tr>
+<tr class="row-odd"><td><p>ballista.client.grpc_timeout_seconds</p></td>
+<td><p>UInt64</p></td>
+<td><p>20</p></td>
+<td><p>Request timeout for gRPC client in seconds</p></td>
+</tr>
+<tr
class="row-even"><td><p>ballista.client.initial_connection_window_size</p></td>
+<td><p>UInt64</p></td>
+<td><p>67108864</p></td>
+<td><p>HTTP/2 initial connection-level flow-control window for gRPC data-plane
clients, in bytes. Should be >= the shuffle governor byte budget so the
governor, not the transport window, is the binding backpressure. 0 leaves the
tonic default.</p></td>
+</tr>
+<tr class="row-odd"><td><p>ballista.client.initial_stream_window_size</p></td>
+<td><p>UInt64</p></td>
+<td><p>16777216</p></td>
+<td><p>HTTP/2 initial stream-level flow-control window for gRPC data-plane
clients, in bytes. 0 leaves the tonic default.</p></td>
+</tr>
+<tr class="row-even"><td><p>ballista.client.io_retries_times</p></td>
+<td><p>UInt16</p></td>
+<td><p>3</p></td>
+<td><p>Number of retries for IO operations in the Ballista client.</p></td>
+</tr>
+<tr class="row-odd"><td><p>ballista.client.io_retry_wait_time_ms</p></td>
+<td><p>UInt64</p></td>
+<td><p>3000</p></td>
+<td><p>Wait time in milliseconds between IO retries in the Ballista
client.</p></td>
+</tr>
+<tr class="row-even"><td><p>ballista.client.pull</p></td>
+<td><p>Boolean</p></td>
+<td><p>false</p></td>
+<td><p>Should client employ pull or push job tracking. In pull mode client
will make a request to server in the loop, until job finishes. Pull mode is
kept for legacy clients.</p></td>
+</tr>
+<tr class="row-odd"><td><p>ballista.client.use_tls</p></td>
+<td><p>Boolean</p></td>
+<td><p>false</p></td>
+<td><p>Should connection between client, scheduler, and executors use
TLS.</p></td>
+</tr>
+<tr class="row-even"><td><p>ballista.job.name</p></td>
+<td><p>Utf8</p></td>
+<td><p>(none)</p></td>
+<td><p>Sets the job name that will appear in the web user interface for any
submitted jobs</p></td>
+</tr>
+<tr
class="row-odd"><td><p>ballista.optimizer.broadcast_join_threshold_bytes</p></td>
+<td><p>UInt64</p></td>
+<td><p>10485760</p></td>
+<td><p>Byte-size threshold below which a hash join’s smaller side is promoted
to CollectLeft and lowered via the broadcast pattern. Governs broadcast
selection under both the static distributed planner and adaptive query planning
(AQE). Set to 0 to disable promotion.</p></td>
+</tr>
+<tr
class="row-even"><td><p>ballista.optimizer.broadcast_join_threshold_rows</p></td>
+<td><p>UInt64</p></td>
+<td><p>1000000</p></td>
+<td><p>Row-count threshold below which a hash join’s smaller side is promoted
to CollectLeft and lowered via the broadcast pattern, used as a fallback when
byte-size statistics are unavailable. Applies to adaptive query planning (AQE).
Set to 0 to disable promotion via the row-count path.</p></td>
+</tr>
+<tr
class="row-odd"><td><p>ballista.optimizer.hash_join_max_build_partition_bytes</p></td>
+<td><p>UInt64</p></td>
+<td><p>67108864</p></td>
+<td><p>Maximum per-partition hash-join build-side bytes for a Partitioned hash
join under AQE. A build partition larger than this falls back to SortMergeJoin
(spillable). Defaults to 64 MiB; 0 disables the check, which makes AQE use a
hash join regardless of build size.</p></td>
+</tr>
+<tr class="row-even"><td><p>ballista.planner.adaptive.enabled</p></td>
+<td><p>Boolean</p></td>
+<td><p>false</p></td>
+<td><p>Enables Adaptive Query Planning (EXPERIMENTAL)</p></td>
+</tr>
+<tr class="row-odd"><td><p>ballista.planner.adaptive_join.enabled</p></td>
+<td><p>Boolean</p></td>
+<td><p>true</p></td>
+<td><p>Enables the AQE dynamic join-selection rule (SelectJoinRule). When true
(default), DynamicJoinSelectionExec nodes are resolved to concrete HashJoin or
CollectLeft join implementations at runtime. Disable only for
debugging.</p></td>
+</tr>
+<tr class="row-even"><td><p>ballista.planner.coalesce.enabled</p></td>
+<td><p>Boolean</p></td>
+<td><p>false</p></td>
+<td><p>Enables the AQE coalesce-shuffle-partitions rule. Disabled by default —
opt in when fewer/larger downstream tasks matter more than parallelism.</p></td>
+</tr>
+<tr
class="row-odd"><td><p>ballista.planner.coalesce.merged_partition_factor</p></td>
+<td><p>Float64</p></td>
+<td><p>1.2</p></td>
+<td><p>Two adjacent partitions are merged when their combined size is below
target_partition_bytes times this factor. Mirrors Spark’s legacy coalesce
semantics.</p></td>
+</tr>
+<tr
class="row-even"><td><p>ballista.planner.coalesce.small_partition_factor</p></td>
+<td><p>Float64</p></td>
+<td><p>0.2</p></td>
+<td><p>A coalesced partition smaller than target_partition_bytes times this
factor counts as small and is merged into its neighbour. Mirrors Spark’s legacy
coalesce semantics.</p></td>
+</tr>
+<tr
class="row-odd"><td><p>ballista.planner.coalesce.target_partition_bytes</p></td>
+<td><p>UInt64</p></td>
+<td><p>67108864</p></td>
+<td><p>Target post-coalesce partition size in bytes. Mirrors Spark’s
advisoryPartitionSizeInBytes.</p></td>
+</tr>
+<tr class="row-even"><td><p>ballista.planner.propagate_empty.enabled</p></td>
+<td><p>Boolean</p></td>
+<td><p>true</p></td>
+<td><p>Enables the AQE propagate-empty-relation rule. Injects EmptyExec into
the plan where an input is known to be empty, such as one side of a join,
allowing downstream work to be skipped.</p></td>
+</tr>
+<tr class="row-odd"><td><p>ballista.scheduler.max_partitions_per_task</p></td>
+<td><p>UInt64</p></td>
+<td><p>1</p></td>
+<td><p>Upper bound on the number of input partitions packed into a single
task’s <code class="docutils literal notranslate"><span
class="pre">partition_slice</span></code>. <code class="docutils literal
notranslate"><span class="pre">1</span></code> (default) means one task per
input partition. Raise to enable multi-partition tasks (fewer tasks,
parallel-sort / parallel-join wins); <code class="docutils literal
notranslate"><span class="pre">0</span></code> means unbounded — the schedule
[...]
+</tr>
+<tr class="row-even"><td><p>ballista.standalone.parallelism</p></td>
+<td><p>UInt16</p></td>
+<td><p>number of available CPU cores</p></td>
+<td><p>Number of concurrent tasks a standalone in-process executor will
run.</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<!-- END GENERATED CONFIG REFERENCE -->
+</section>
</section>
<section id="shuffle-settings">
<h2>Shuffle Settings<a class="headerlink" href="#shuffle-settings" title="Link
to this heading">#</a></h2>
<p>The following session-level keys control Ballista’s shuffle behavior. See
the <a class="reference internal"
href="tuning-guide.html#shuffle-implementation"><span class="std
std-ref">tuning guide</span></a> for an
explanation of the sort-based shuffle writer.</p>
+<!-- BEGIN GENERATED CONFIG REFERENCE prefix=ballista.shuffle. -->
+<!-- prettier-ignore -->
<div class="pst-scrollable-table-container"><table class="table">
<thead>
<tr class="row-odd"><th class="head"><p>key</p></th>
@@ -464,34 +618,100 @@ explanation of the sort-based shuffle writer.</p>
</tr>
</thead>
<tbody>
-<tr
class="row-even"><td><p>ballista.shuffle.max_concurrent_read_requests</p></td>
-<td><p>UInt64</p></td>
-<td><p>64</p></td>
-<td><p>Maximum number of concurrent fetch requests the shuffle reader will
issue.</p></td>
+<tr class="row-even"><td><p>ballista.shuffle.compression.codec</p></td>
+<td><p>Utf8</p></td>
+<td><p>lz4</p></td>
+<td><p>Compression codec specification used in the shuffle process. Possible
values: none, lz4, zstd. Defaults to lz4 to preserve current behaviour</p></td>
</tr>
<tr class="row-odd"><td><p>ballista.shuffle.force_remote_read</p></td>
<td><p>Boolean</p></td>
<td><p>false</p></td>
-<td><p>Forces the shuffle reader to fetch every partition through Arrow
Flight, even when the data is local. Intended for testing.</p></td>
+<td><p>Forces the shuffle reader to always read partitions via the Arrow
Flight client, even when partitions are local to the node.</p></td>
+</tr>
+<tr
class="row-even"><td><p>ballista.shuffle.max_concurrent_read_requests</p></td>
+<td><p>UInt64</p></td>
+<td><p>64</p></td>
+<td><p>Maximum concurrent requests shuffle reader can process</p></td>
+</tr>
+<tr
class="row-odd"><td><p>ballista.shuffle.reader.default_block_size_bytes</p></td>
+<td><p>UInt64</p></td>
+<td><p>1048576</p></td>
+<td><p>Assumed per-partition byte size charged to the shuffle governor when
partition stats carry no byte count.</p></td>
+</tr>
+<tr
class="row-even"><td><p>ballista.shuffle.reader.max_blocks_in_flight_per_address</p></td>
+<td><p>UInt64</p></td>
+<td><p>128</p></td>
+<td><p>Reduce-side shuffle governor: maximum concurrent in-flight partition
fetches to a single executor address.</p></td>
+</tr>
+<tr class="row-odd"><td><p>ballista.shuffle.reader.max_bytes_in_flight</p></td>
+<td><p>UInt64</p></td>
+<td><p>50331648</p></td>
+<td><p>Reduce-side shuffle governor: maximum total in-flight bytes across
concurrent remote partition fetches. Mirrors Spark’s
spark.reducer.maxSizeInFlight. Values above 4 GiB are clamped to 4 GiB (u32
semaphore limit).</p></td>
</tr>
<tr class="row-even"><td><p>ballista.shuffle.remote_read_prefer_flight</p></td>
<td><p>Boolean</p></td>
<td><p>false</p></td>
-<td><p>For remote reads, prefer the Arrow Flight reader over the block reader.
The block reader is generally faster.</p></td>
+<td><p>Forces the shuffle reader to use flight reader instead of block reader
for remote read. Block reader usually has better performance and resource
utilization</p></td>
</tr>
<tr class="row-odd"><td><p>ballista.shuffle.sort_based.batch_size</p></td>
<td><p>UInt64</p></td>
<td><p>8192</p></td>
-<td><p>Target row count when coalescing buffered batches before they are
written or spilled.</p></td>
+<td><p>Target batch size in rows for coalescing small batches in sort
shuffle</p></td>
</tr>
<tr
class="row-even"><td><p>ballista.shuffle.sort_based.memory_limit_per_task_bytes</p></td>
<td><p>UInt64</p></td>
<td><p>268435456</p></td>
-<td><p>Per-task buffered-bytes budget at which the sort-based writer spills to
disk (256 MiB default), counted independently of the runtime memory pool. Set
to <code class="docutils literal notranslate"><span class="pre">0</span></code>
to disable the per-task budget and spill only under memory-pool pressure — safe
only with a bounded memory pool, otherwise the writer never spills and may run
out of memory.</p></td>
+<td><p>Per-task buffered-bytes budget at which the sort shuffle writer spills
its in-memory batches to disk. Counted independently of the runtime memory
pool, so spilling kicks in even when the pool is unbounded. Total worst-case
sort shuffle memory per executor is approximately vcores * this value. Set to 0
to disable the per-task budget and rely solely on runtime memory-pool pressure
to trigger spilling; this is safe only with a bounded memory pool, otherwise
the writer never spills an [...]
+</tr>
+<tr class="row-odd"><td><p>ballista.shuffle.writer_channel_capacity</p></td>
+<td><p>UInt32</p></td>
+<td><p>8</p></td>
+<td><p>Bounded channel capacity for async-to-blocking I/O bridge in shuffle
writer</p></td>
</tr>
</tbody>
</table>
</div>
+<!-- END GENERATED CONFIG REFERENCE -->
+</section>
+<section id="testing-and-fault-injection">
+<h2>Testing and Fault Injection<a class="headerlink"
href="#testing-and-fault-injection" title="Link to this heading">#</a></h2>
+<p>These settings drive chaos-monkey fault injection and exist for robustness
+testing. They are not intended for production use.</p>
+<!-- BEGIN GENERATED CONFIG REFERENCE prefix=ballista.testing. -->
+<!-- prettier-ignore -->
+<div class="pst-scrollable-table-container"><table class="table">
+<thead>
+<tr class="row-odd"><th class="head"><p>key</p></th>
+<th class="head"><p>type</p></th>
+<th class="head"><p>default</p></th>
+<th class="head"><p>description</p></th>
+</tr>
+</thead>
+<tbody>
+<tr class="row-even"><td><p>ballista.testing.chaos_execution.enabled</p></td>
+<td><p>Boolean</p></td>
+<td><p>false</p></td>
+<td><p>Enables chaos-monkey execution injection for robustness testing. When
true, ChaosExec is inserted at a random point in the plan once per optimize
call.</p></td>
+</tr>
+<tr class="row-odd"><td><p>ballista.testing.chaos_execution.fault_type</p></td>
+<td><p>Utf8</p></td>
+<td><p>transient</p></td>
+<td><p>Fault type injected by chaos-monkey execution. “transient”: IoError
(retryable); “fatal”: Execution error (non-retryable); “panic”: panics the task
thread; “delay” or “delay:N”: sleeps N ms per batch with no error (default
N=1).</p></td>
+</tr>
+<tr
class="row-even"><td><p>ballista.testing.chaos_execution.probability</p></td>
+<td><p>Float64</p></td>
+<td><p>0.25</p></td>
+<td><p>Failure probability (0.0–1.0) passed to ChaosExec when chaos execution
is enabled.</p></td>
+</tr>
+<tr class="row-odd"><td><p>ballista.testing.chaos_execution.seed</p></td>
+<td><p>Utf8</p></td>
+<td><p>(empty)</p></td>
+<td><p>Optional u64 seed for the chaos RNG. Empty string (default) means
non-deterministic; set to a numeric value to get reproducible fault injection
across runs.</p></td>
+</tr>
+</tbody>
+</table>
+</div>
+<!-- END GENERATED CONFIG REFERENCE -->
</section>
<section id="ballista-scheduler-configuration-settings">
<h2>Ballista Scheduler Configuration Settings<a class="headerlink"
href="#ballista-scheduler-configuration-settings" title="Link to this
heading">#</a></h2>
@@ -588,8 +808,12 @@ manage the whole cluster are also needed to be taken care
of.</p>
</div>
<nav id="pst-page-toc-nav" class="page-toc"
aria-labelledby="pst-page-navigation-heading-2">
<ul class="pst-show_toc_level nav section-nav flex-column">
-<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link"
href="#ballista-configuration-settings">Ballista Configuration Settings</a></li>
+<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link"
href="#ballista-configuration-settings">Ballista Configuration Settings</a><ul
class="nav section-nav flex-column">
+<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link"
href="#session-settings">Session Settings</a></li>
+</ul>
+</li>
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link"
href="#shuffle-settings">Shuffle Settings</a></li>
+<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link"
href="#testing-and-fault-injection">Testing and Fault Injection</a></li>
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link"
href="#ballista-scheduler-configuration-settings">Ballista Scheduler
Configuration Settings</a></li>
</ul>
</nav></div>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]