layout: page title: Configuration nav_order: 16 ————-

Gluten Bolt backend configurations

Key Default Description
spark.gluten.bolt.broadcastBuild.mergeBatches false If enabled, all columnar batches in a broadcast build relation will be serialized into a single buffer to reduce the number of addInput calls in HashBuild operator. This can significantly improve BHJ performance when the broadcast table has many small batches, but may increase driver-side peak memory and is not suitable for very large broadcasts.
spark.gluten.bolt.castFromVarcharAddTrimNode false If true, will add a trim node which has the same sementic as vanilla Spark to CAST-from-varchar.Otherwise, do nothing.
spark.gluten.bolt.fs.s3a.connect.timeout 200s Timeout for AWS s3 connection.
spark.gluten.boltExecutionPool.minMemoryMaxWaitTime 300000  
spark.gluten.boltMemoryManager.maxWaitTimeWhenFree 180000  
spark.gluten.sql.columnar.backend.bolt.IOThreads 16 The Size of the IO thread pool in the Connector. This thread pool is used for split preloading and DirectBufferedInput. By default, the value is the same as the maximum task slots per Spark executor.
spark.gluten.sql.columnar.backend.bolt.SplitPreloadPerDriver 2 The split preload per task
spark.gluten.sql.columnar.backend.bolt.abandonPartialAggregationMinPct 90 If partial aggregation aggregationPct greater than this value, partial aggregation may be early abandoned. Note: this option only works when flushable partial aggregation is enabled. Ignored when spark.gluten.sql.columnar.backend.bolt.flushablePartialAggregation=false.
spark.gluten.sql.columnar.backend.bolt.abandonPartialAggregationMinRows 100000 If partial aggregation input rows number greater than this value, partial aggregation may be early abandoned. Note: this option only works when flushable partial aggregation is enabled. Ignored when spark.gluten.sql.columnar.backend.bolt.flushablePartialAggregation=false.
spark.gluten.sql.columnar.backend.bolt.asyncTimeoutOnTaskStopping 30000ms Timeout for asynchronous execution when task is being stopped in Bolt backend. It’s recommended to set to a number larger than network connection timeout that the possible aysnc tasks are relying on.
spark.gluten.sql.columnar.backend.bolt.bloomFilter.expectedNumItems 1000000 The default number of expected items for the bolt bloomfilter: ‘spark.bloom_filter.expected_num_items’
spark.gluten.sql.columnar.backend.bolt.bloomFilter.maxNumBits 4194304 The max number of bits to use for the bolt bloom filter: ‘spark.bloom_filter.max_num_bits’
spark.gluten.sql.columnar.backend.bolt.bloomFilter.numBits 8388608 The default number of bits to use for the bolt bloom filter: ‘spark.bloom_filter.num_bits’
spark.gluten.sql.columnar.backend.bolt.cacheEnabled false Enable Bolt cache, default off. It’s recommended to enablesoft-affinity as well when enable bolt cache.
spark.gluten.sql.columnar.backend.bolt.cachePrefetchMinPct 0 Set prefetch cache min pct for bolt file scan
spark.gluten.sql.columnar.backend.bolt.checkUsageLeak true Enable check memory usage leak.
spark.gluten.sql.columnar.backend.bolt.cudf.enableTableScan false Enable cudf table scan
spark.gluten.sql.columnar.backend.bolt.cudf.memoryPercent 50 The initial percent of GPU memory to allocate for memory resource for one thread.
spark.gluten.sql.columnar.backend.bolt.cudf.memoryResource async GPU RMM memory resource.
spark.gluten.sql.columnar.backend.bolt.directorySizeGuess 32KB Deprecated, rename to spark.gluten.sql.columnar.backend.bolt.footerEstimatedSize
spark.gluten.sql.columnar.backend.bolt.fileHandleCacheEnabled false Disables caching if false. File handle cache should be disabled if files are mutable, i.e. file content may change while file path stays the same.
spark.gluten.sql.columnar.backend.bolt.filePreloadThreshold 1MB Set the file preload threshold for bolt file scan, refer to Bolt’s file-preload-threshold
spark.gluten.sql.columnar.backend.bolt.floatingPointMode loose Config used to control the tolerance of floating point operations alignment with Spark. When the mode is set to strict, flushing is disabled for sum(float/double)and avg(float/double). When set to loose, flushing will be enabled.
spark.gluten.sql.columnar.backend.bolt.flushablePartialAggregation true Enable flushable aggregation. If true, Gluten will try converting regular aggregation into Bolt’s flushable aggregation when applicable. A flushable aggregation could emit intermediate result at anytime when memory is full / data reduction ratio is low.
spark.gluten.sql.columnar.backend.bolt.footerEstimatedSize 32KB Set the footer estimated size for bolt file scan, refer to Bolt’s footer-estimated-size
spark.gluten.sql.columnar.backend.bolt.loadQuantum 256MB Set the load quantum for bolt file scan, recommend to use the default value (256MB) for performance consideration. If Bolt cache is enabled, it can be 8MB at most.
spark.gluten.sql.columnar.backend.bolt.maxCoalescedBytes 64MB Set the max coalesced bytes for bolt file scan
spark.gluten.sql.columnar.backend.bolt.maxCoalescedDistance 512KB Set the max coalesced distance bytes for bolt file scan
spark.gluten.sql.columnar.backend.bolt.maxCompiledRegexes 100 Controls maximum number of compiled regular expression patterns per function instance per thread of execution.
spark.gluten.sql.columnar.backend.bolt.maxExtendedPartialAggregationMemoryRatio 0.15 Set the max extended memory of partial aggregation as maxExtendedPartialAggregationMemoryRatio of offheap size. Note: this option only works when flushable partial aggregation is enabled. Ignored when spark.gluten.sql.columnar.backend.bolt.flushablePartialAggregation=false.
spark.gluten.sql.columnar.backend.bolt.maxPartialAggregationMemory <undefined> Set the max memory of partial aggregation in bytes. When this option is set to a value greater than 0, it will override spark.gluten.sql.columnar.backend.bolt.maxPartialAggregationMemoryRatio. Note: this option only works when flushable partial aggregation is enabled. Ignored when spark.gluten.sql.columnar.backend.bolt.flushablePartialAggregation=false.
spark.gluten.sql.columnar.backend.bolt.maxPartialAggregationMemoryRatio 0.1 Set the max memory of partial aggregation as maxPartialAggregationMemoryRatio of offheap size. Note: this option only works when flushable partial aggregation is enabled. Ignored when spark.gluten.sql.columnar.backend.bolt.flushablePartialAggregation=false.
spark.gluten.sql.columnar.backend.bolt.maxPartitionsPerWritersSession 10000 Maximum number of partitions per a single table writer instance.
spark.gluten.sql.columnar.backend.bolt.maxSpillBytes 100G The maximum file size of a query
spark.gluten.sql.columnar.backend.bolt.maxSpillFileSize 1GB The maximum size of a single spill file created
spark.gluten.sql.columnar.backend.bolt.maxSpillLevel 4 The max allowed spilling level with zero being the initial spilling level
spark.gluten.sql.columnar.backend.bolt.maxSpillRunRows 3M The maximum row size of a single spill run
spark.gluten.sql.columnar.backend.bolt.memCacheSize 1GB The memory cache size
spark.gluten.sql.columnar.backend.bolt.memInitCapacity 8MB The initial memory capacity to reserve for a newly created Bolt query memory pool.
spark.gluten.sql.columnar.backend.bolt.memoryPoolCapacityTransferAcrossTasks true Whether to allow memory capacity transfer between memory pools from different tasks.
spark.gluten.sql.columnar.backend.bolt.memoryUseHugePages false Use explicit huge pages for Bolt memory allocation.
spark.gluten.sql.columnar.backend.bolt.orc.scan.enabled true Enable bolt orc scan. If disabled, vanilla spark orc scan will be used.
spark.gluten.sql.columnar.backend.bolt.orcUseColumnNames true Maps table field names to file field names using names, not indices for ORC files.
spark.gluten.sql.columnar.backend.bolt.parquetUseColumnNames true Maps table field names to file field names using names, not indices for Parquet files.
spark.gluten.sql.columnar.backend.bolt.prefetchRowGroups 6 Set the prefetch row groups for bolt file scan
spark.gluten.sql.columnar.backend.bolt.propagateIgnoreNullKeys true If enabled, we will identify aggregation followed by an inner join on the grouping keys, and mark the ignoreNullKeys flag to true to avoid unnecessary aggregation on null keys.
spark.gluten.sql.columnar.backend.bolt.queryTraceEnabled false Enable query tracing flag.
spark.gluten.sql.columnar.backend.bolt.reclaimMaxWaitMs 3600000ms The max time in ms to wait for memory reclaim.
spark.gluten.sql.columnar.backend.bolt.resizeBatches.shuffleInput false If true, combine small columnar batches together before sending to shuffle. The default minimum output batch size is equal to 0.25 * spark.gluten.sql.columnar.maxBatchSize
spark.gluten.sql.columnar.backend.bolt.resizeBatches.shuffleInput.minSize <undefined> The minimum batch size for shuffle. If size of an input batch is smaller than the value, it will be combined with other batches before sending to shuffle. Only functions when spark.gluten.sql.columnar.backend.bolt.resizeBatches.shuffleInput is set to true. Default value: 0.25 *
spark.gluten.sql.columnar.backend.bolt.resizeBatches.shuffleInputOuptut.minSize <undefined> The minimum batch size for shuffle input and output. If size of an input batch is smaller than the value, it will be combined with other batches before sending to shuffle. The same applies for batches output by shuffle read. Only functions when spark.gluten.sql.columnar.backend.bolt.resizeBatches.shuffleInput or spark.gluten.sql.columnar.backend.bolt.resizeBatches.shuffleOutput is set to true. Default value: 0.25 *
spark.gluten.sql.columnar.backend.bolt.resizeBatches.shuffleOutput false If true, combine small columnar batches together right after shuffle read. The default minimum output batch size is equal to 0.25 * spark.gluten.sql.columnar.maxBatchSize
spark.gluten.sql.columnar.backend.bolt.showTaskMetricsWhenFinished false Show bolt full task metrics when finished.
spark.gluten.sql.columnar.backend.bolt.spillFileSystem local The filesystem used to store spill data. local: The local file system. heap-over-local: Write file to JVM heap if having extra heap space. Otherwise write to local file system.
spark.gluten.sql.columnar.backend.bolt.spillStrategy auto none: Disable spill on Bolt backend; auto: Let Spark memory manager manage Bolt’s spilling
spark.gluten.sql.columnar.backend.bolt.ssdCacheIOThreads 1 The IO threads for cache promoting
spark.gluten.sql.columnar.backend.bolt.ssdCachePath /tmp The folder to store the cache files, better on SSD
spark.gluten.sql.columnar.backend.bolt.ssdCacheShards 1 The cache shards
spark.gluten.sql.columnar.backend.bolt.ssdCacheSize 1GB The SSD cache size, will do memory caching only if this value = 0
spark.gluten.sql.columnar.backend.bolt.ssdCheckpointIntervalBytes 0 Checkpoint after every ‘checkpointIntervalBytes’ for SSD cache. 0 means no checkpointing.
spark.gluten.sql.columnar.backend.bolt.ssdChecksumEnabled false If true, checksum write to SSD is enabled.
spark.gluten.sql.columnar.backend.bolt.ssdChecksumReadVerificationEnabled false If true, checksum read verification from SSD is enabled.
spark.gluten.sql.columnar.backend.bolt.ssdDisableFileCow false True if copy on write should be disabled.
spark.gluten.sql.columnar.backend.bolt.ssdODirect false The O_DIRECT flag for cache writing
spark.gluten.sql.enable.enhancedFeatures true Enable some features including iceberg native write and other features.
spark.gluten.sql.native.arrow.reader.enabled false This is config to specify whether to enable the native columnar csv reader
spark.gluten.sql.rewrite.castArrayToString true When true, rewrite cast(array as String) to concat('[', array_join(array, ', ', null), ']') to allow offloading to Bolt.

Gluten Bolt backend experimental configurations

Key Default Description
spark.gluten.bolt.abandonbuild.noduphashminpct 0.0 Experimental: abandon hashmap build if duplicated rows are more than this percentile.
spark.gluten.bolt.abandonbuild.noduphashminrows 100000 Experimental: abandon hashmap build if duplicated rows more than this number.
spark.gluten.bolt.offHeapBroadcastBuildRelation.enabled false Experimental: If enabled, broadcast build relation will use offheap memory. Otherwise, broadcast build relation will use onheap memory.

This site uses Just the Docs, a documentation theme for Jekyll.