RAPIDS Accelerator for Apache Spark Advanced Configuration

July 10, 2026 ยท View on GitHub

This page is generated by RapidsConf.helpAdvanced against Apache Spark 3.3.0. Most of the content in this page is applicable to other versions of Apache Spark with variations

RAPIDS Accelerator for Apache Spark Advanced Configuration

Most users will not need to modify the configuration options listed below. They are documented here for completeness and advanced usage.

The following configuration options are supported by the RAPIDS Accelerator for Apache Spark.

For commonly used configurations and examples of setting options, please refer to the RAPIDS Accelerator for Configuration page.

Advanced Configuration

NameDescriptionDefault ValueApplicable at
spark.rapids.cgroups.memory.limit.pathThe filepath of the local file on host that stores the memory limit for the process. If omitted, attempts to detect the file from common locations.NoneStartup
spark.rapids.cgroups.memory.usage.pathThe filepath of the local file on host that stores the memory usage for the process. If omitted, attempts to detect the file from common locations.NoneStartup
spark.rapids.filecache.allowPathRegexpA regular expression to decide which paths will be cached when the file cache is enabled. If this is not set, then all paths are allowed to cache. If a path is allowed by this regexp but blocked by spark.rapids.filecache.blockPathRegexp, then the path is blocked to cache.NoneStartup
spark.rapids.filecache.blockPathRegexpA regular expression to decide which paths will not be cached when the file cache is enabled. If a path is blocked by this regexp but is allowed by spark.rapids.filecache.allowPathRegexp, then the path is blocked.NoneStartup
spark.rapids.filecache.checkStaleControls whether the cached is checked for being out of date with respect to the input file. When enabled, the data that has been cached locally for a file will be invalidated if the file is updated after being cached. This feature is only necessary if an input file for a Spark application can be changed during the lifetime of the application. If an individual input file will not be overwritten during the Spark application then performance may be improved by setting this to false.trueStartup
spark.rapids.filecache.maxBytesControls the maximum amount of data that will be cached locally. If left unspecified, it will use half of the available disk space detected on startup for the configured Spark local disks.NoneStartup
spark.rapids.filecache.minimumFreeSpace.bytesSpecify the minimum amount of free space in the Spark local disks. When the amount of free space on the Spark local disks drops below this value, cache data will be removed automatically to free disk space. A zero or negative value will disable this feature. Note if multiple Spark applications running on the same node, or there are other applications running with heavy disk writing, the filecache may not drop caches in time and may cause full disk errors. Please increase this value for this case.32212254720Startup
spark.rapids.filecache.useChecksumsWhether to write out and verify checksums for the cached local files.falseStartup
spark.rapids.flameGraph.asyncProfiler.optionsSpark-RAPIDS plugin uses the async profiler to generate flame graphs. You can specify profiler options via this property. The plugin supports all options except for the 'file' option listed in https://github.com/async-profiler/async-profiler/blob/b3f58429f5c0252e9ced3f0fcb444fed17671321/docs/ProfilerOptions.md#options-applicable-to-any-output-format .The default values is 'jfr,event=cpu,wall=10ms'.jfr,event=cpu,wall=10msRuntime
spark.rapids.flameGraph.executorsComma-separated list of executors IDs and hyphenated ranges of executor IDs to profile when async-profiler (for flame graph) is enabled. The default value '*' means all executors*Runtime
spark.rapids.flameGraph.jfr.compressionEnable compression for JFR files generated by async profiler. When enabled, JFR files will be compressed after generation to save disk space.falseRuntime
spark.rapids.flameGraph.pathPrefixEnables collecting flame graph (with async profiler) and specifies a file prefix to use when writing the JFR file by async-profiler. The async-profiler will write a flame graph file for each stage. It is strongly recommended to set 'spark.scheduler.mode' to 'FIFO' so that there is a clean boundary between stages, and then we can better understand each stage.NoneRuntime
spark.rapids.flameGraph.stageEpochIntervalInterval in seconds to determine the current stage epoch based on running task counts. The profiler will check which stage has the most running tasks and profile that stage during each epoch. This allows profiling when multiple stages run concurrently even if FIFO scheduling is already chosen.5Runtime
spark.rapids.gpu.resourceNameThe name of the Spark resource that represents a GPU that you want the plugin to use if using custom resources with Spark.gpuStartup
spark.rapids.iceberg.s3.async.connection-max-idle-time-msConnection-max-idle-time (ms) for the AwsCrtAsyncHttpClient used by the spark-rapids Iceberg S3 byte-range reader. No equivalent Iceberg property.300000Startup
spark.rapids.iceberg.s3.async.max-concurrencyMax concurrent connections for the AwsCrtAsyncHttpClient used by the spark-rapids Iceberg S3 byte-range reader. Used only when the Iceberg FileIO property s3.crt.max-concurrency is not set.200Startup
spark.rapids.iceberg.s3.async.tcp-keepalive-interval-msTCP keep-alive probe interval (ms) for the AwsCrtAsyncHttpClient used by the spark-rapids Iceberg S3 byte-range reader. No equivalent Iceberg property.60000Startup
spark.rapids.iceberg.s3.async.tcp-keepalive-timeout-msTCP keep-alive probe timeout (ms) for the AwsCrtAsyncHttpClient used by the spark-rapids Iceberg S3 byte-range reader. No equivalent Iceberg property.30000Startup
spark.rapids.memory.gpu.allocFractionThe fraction of available (free) GPU memory that should be allocated for pooled memory. This must be less than or equal to the maximum limit configured via spark.rapids.memory.gpu.maxAllocFraction, and greater than or equal to the minimum limit configured via spark.rapids.memory.gpu.minAllocFraction.1.0Startup
spark.rapids.memory.gpu.debugProvides a log of GPU memory allocations and frees. If set to STDOUT or STDERR the logging will go there. Setting it to NONE disables logging. All other values are reserved for possible future expansion and in the mean time will disable logging.NONEStartup
spark.rapids.memory.gpu.oomDumpDirThe path to a local directory where a heap dump will be created if the GPU encounters an unrecoverable out-of-memory (OOM) error. The filename will be of the form: "gpu-oom--.hprof" where is the process ID, and the dumpId is a sequence number to disambiguate multiple heap dumps per process lifecycleNoneStartup
spark.rapids.memory.gpu.poolSelect the RMM pooling allocator to use. Valid values are "DEFAULT", "ARENA", "ASYNC", and "NONE". With "DEFAULT", the RMM pool allocator is used; with "ARENA", the RMM arena allocator is used; with "ASYNC", the new CUDA stream-ordered memory allocator in CUDA 11.2+ is used. If set to "NONE", pooling is disabled and RMM just passes through to CUDA memory allocation directly.ASYNCStartup
spark.rapids.memory.gpu.reserveThe amount of GPU memory that should remain unallocated by RMM and left for system use such as memory needed for kernels and kernel launches.671088640Startup
spark.rapids.memory.gpu.state.debugTo better recover from out of memory errors, RMM will track several states for the threads that interact with the GPU. This provides a log of those state transitions to aid in debugging it. STDOUT or STDERR will have the logging go there empty string will disable logging and anything else will be treated as a file to write the logs to.Startup
spark.rapids.memory.gpu.unspill.enabledWhen a spilled GPU buffer is needed again, should it be unspilled, or only copied back into GPU memory temporarily. Unspilling may be useful for GPU buffers that are needed frequently, for example, broadcast variables; however, it may also increase GPU memory usagefalseStartup
spark.rapids.perfio.gcs.enabledControls the Google Cloud Storage reader for improved performance in certain queries. When true, enables it and throws at startup if google-cloud-storage classes are not on the classpath. When false, disables it unconditionally. When unset (default), enables it opportunistically if google-cloud-storage classes are found, otherwise falls back to the configured GCS connector with a warning. The presence of com.google.cloud:google-cloud-storage on the executor classpath is required.NoneStartup
spark.rapids.perfio.s3.enabledControls the AWS S3 reader for improved performance in certain queries. When true, enables it and throws at startup if no compatible HTTP client is on the classpath. When false, disables it unconditionally. When unset (default), enables it opportunistically if a compatible HTTP client is found, otherwise falls back to S3A with a warning. The presence of AWS SDK packages for Netty and/or CRT HTTP clients on the classpath is required. You can use Spark submit option --packages software.amazon.awssdk:s3:2.22.12,software.amazon.awssdk:aws-crt-client:2.22.12 to achieve this. See https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/crt-based-s3-client.html#crt-based-s3-client-dependNoneStartup
spark.rapids.python.concurrentPythonWorkersSet the number of Python worker processes that can execute concurrently per GPU. Python worker processes may temporarily block when the number of concurrent Python worker processes started by the same executor exceeds this amount. Allowing too many concurrent tasks on the same GPU may lead to GPU out of memory errors. >0 means enabled, while <=0 means unlimited0Runtime
spark.rapids.python.memory.gpu.allocFractionThe fraction of total GPU memory that should be initially allocated for pooled memory for all the Python workers. It supposes to be less than (1 - $(spark.rapids.memory.gpu.allocFraction)), since the executor will share the GPU with its owning Python workers. Half of the rest will be used if not specifiedNoneRuntime
spark.rapids.python.memory.gpu.maxAllocFractionThe fraction of total GPU memory that limits the maximum size of the RMM pool for all the Python workers. It supposes to be less than (1 - $(spark.rapids.memory.gpu.maxAllocFraction)), since the executor will share the GPU with its owning Python workers. when setting to 0 it means no limit.0.0Runtime
spark.rapids.python.memory.gpu.pooling.enabledShould RMM in Python workers act as a pooling allocator for GPU memory, or should it just pass through to CUDA memory allocation directly. When not specified, It will honor the value of config 'spark.rapids.memory.gpu.pool', but now only 'DEFAULT' and 'NONE' are supported. If 'ASYNC' or 'ARENA' is specified, it will fall back to 'DEFAULT'.NoneRuntime
spark.rapids.shuffle.enabledEnable or disable the RAPIDS Shuffle Manager at runtime. The RAPIDS Shuffle Manager must already be configured. When set to false, the built-in Spark shuffle will be used.trueRuntime
spark.rapids.shuffle.modeRAPIDS Shuffle Manager mode. "MULTITHREADED": shuffle file writes and reads are parallelized using a thread pool. "UCX": (requires UCX installation) uses accelerated transports for transferring shuffle blocks. "CACHE_ONLY": use when running a single executor, for short-circuit cached shuffle (for testing purposes).MULTITHREADEDStartup
spark.rapids.shuffle.multiThreaded.maxBytesInFlightThe size limit, in bytes, that the RAPIDS shuffle manager configured in "MULTITHREADED" mode will allow to be serialized or deserialized concurrently per task. This is also the maximum amount of memory that will be used per task. This should be set larger than Spark's default maxBytesInFlight (48MB). The larger this setting is, the more compressed shuffle chunks are processed concurrently. In practice, care needs to be taken to not go over the amount of off-heap memory that Netty has available. See https://github.com/NVIDIA/spark-rapids/issues/9153.134217728Startup
spark.rapids.shuffle.multiThreaded.reader.threadsThe number of threads to use for reading shuffle blocks per executor in the RAPIDS shuffle manager configured in "MULTITHREADED" mode. There are two special values: 0 = feature is disabled, falls back to Spark built-in shuffle reader; 1 = our implementation of Spark's built-in shuffle reader with extra metrics.20Startup
spark.rapids.shuffle.multiThreaded.writer.threadsThe number of threads to use for writing shuffle blocks per executor in the RAPIDS shuffle manager configured in "MULTITHREADED" mode. There are two special values: 0 = feature is disabled, falls back to Spark built-in shuffle writer; 1 = our implementation of Spark's built-in shuffle writer with extra metrics.20Startup
spark.rapids.shuffle.multithreaded.skipMergeWhen using MULTITHREADED shuffle mode, skip merging partial shuffle files and instead serve data directly from the MultithreadedShuffleBufferCatalog. This avoids I/O overhead from merging but requires: (1) External Shuffle Service (ESS) to be disabled, and (2) spark.rapids.memory.host.offHeapLimit.enabled=true (off-heap memory limits enabled) to prevent OOM from unbounded buffer growth. When set to false (default), partial files will be merged into a single shuffle file per map task as in standard Spark shuffle. Set to true when both requirements are met and shuffle data is not reused across SQL queries (e.g., avoid on Databricks with shuffle reuse enabled).falseStartup
spark.rapids.shuffle.transport.earlyStartEnable early connection establishment for RAPIDS ShuffletrueStartup
spark.rapids.shuffle.transport.earlyStart.heartbeatIntervalShuffle early start heartbeat interval (milliseconds). Executors will send a heartbeat RPC message to the driver at this interval5000Startup
spark.rapids.shuffle.transport.earlyStart.heartbeatTimeoutShuffle early start heartbeat timeout (milliseconds). Executors that don't heartbeat within this timeout will be considered stale. This timeout must be higher than the value for spark.rapids.shuffle.transport.earlyStart.heartbeatInterval10000Startup
spark.rapids.shuffle.transport.maxReceiveInflightBytesMaximum aggregate amount of bytes that be fetched at any given time from peers during shuffle1073741824Startup
spark.rapids.shuffle.ucx.activeMessages.forceRndvSet to true to force 'rndv' mode for all UCX Active Messages. This should only be required with UCX 1.10.x. UCX 1.11.x deployments should set to false.falseStartup
spark.rapids.shuffle.ucx.managementServerHostThe host to be used to start the management servernullStartup
spark.rapids.shuffle.ucx.useWakeupWhen set to true, use UCX's event-based progress (epoll) in order to wake up the progress thread when needed, instead of a hot loop.trueStartup
spark.rapids.sql.acceleratedColumnarToRow.enabledWhen set to true (default) the GPU columnar-to-row transition uses the GPU transpose kernel (AcceleratedColumnarToRowIterator) for wide fixed-width / STRING schemas. Setting it to false forces the slower per-row CPU iterator (ColumnarToRowIterator). Mainly useful for troubleshooting and performance comparisons; production workloads should leave this on.trueRuntime
spark.rapids.sql.allowMultipleJarsAllow multiple rapids-4-spark, spark-rapids-jni, and cudf jars on the classpath. Spark will take the first one it finds, so the version may not be expected. Possisble values are ALWAYS: allow all jars, SAME_REVISION: only allow jars with the same revision, NEVER: do not allow multiple jars at all.SAME_REVISIONStartup
spark.rapids.sql.castDecimalToFloat.enabledCasting from decimal to floating point types on the GPU returns results that have tiny difference compared to results returned from CPU.trueRuntime
spark.rapids.sql.castFloatToDecimal.enabledCasting from floating point types to decimal on the GPU returns results that have tiny difference compared to results returned from CPU.trueRuntime
spark.rapids.sql.castFloatToIntegralTypes.enabledCasting from floating point types to integral types on the GPU supports a slightly different range of values when using Spark 3.1.0 or later. Refer to the CAST documentation for more details.trueRuntime
spark.rapids.sql.castFloatToString.enabledCasting from floating point types to string on the GPU returns results that have a different precision than the default results of Spark.trueRuntime
spark.rapids.sql.castStringToFloat.enabledWhen set to true, enables casting from strings to float types (float, double) on the GPU. Currently hex values aren't supported on the GPU. Also note that casting from string to float types on the GPU returns incorrect results when the string represents any number "1.7976931348623158E308" <= x < "1.7976931348623159E308" and "-1.7976931348623158E308" >= x > "-1.7976931348623159E308" in both these cases the GPU returns Double.MaxValue while CPU returns "+Infinity" and "-Infinity" respectivelytrueRuntime
spark.rapids.sql.castStringToTimestamp.enabledWhen set to false, this disables casting from string to timestamp on the GPU.trueRuntime
spark.rapids.sql.coalescing.reader.numFilterParallelThis controls the number of files the coalescing reader will run in each thread when it filters blocks for reading. If this value is greater than zero the files will be filtered in a multithreaded manner where each thread filters the number of files set by this config. If this is set to zero the files are filtered serially. This uses the same thread pool as the multithreaded reader, see spark.rapids.sql.multiThreadedRead.numThreads.0Runtime
spark.rapids.sql.concurrentGpuTasksSet the initial number of tasks that can execute concurrently per GPU. By default the number of tasks allowed on the GPU will adjust dynamically to try and provide optimal performance. This sets the starting point for each stage. If this is not set the amount of GPU memory will be used to come up with a starting estimate.NoneRuntime
spark.rapids.sql.concurrentGpuTasks.dynamicSet to false if the system should not dynamically adjust the concurrent task amount, but keep it to be a static numbertrueRuntime
spark.rapids.sql.concurrentWriterPartitionFlushSizeThe flush size of the concurrent writer cache in bytes for each partition. If specified spark.sql.maxConcurrentOutputFileWriters, use concurrent writer to write data. Concurrent writer first caches data for each partition and begins to flush the data if it finds one partition with a size that is greater than or equal to this config. The default value is 0, which will try to select a size based off of file type specific configs. E.g.: It uses write.parquet.row-group-size-bytes config for Parquet type and orc.stripe.size config for Orc type. If the value is greater than 0, will use this positive value.Max value may get better performance but not always, because concurrent writer uses spillable cache and big value may cause more IO swaps.0Runtime
spark.rapids.sql.csv.read.decimal.enabledCSV reading is not 100% compatible when reading decimals.falseRuntime
spark.rapids.sql.csv.read.double.enabledCSV reading is not 100% compatible when reading doubles.trueRuntime
spark.rapids.sql.csv.read.float.enabledCSV reading is not 100% compatible when reading floats.trueRuntime
spark.rapids.sql.decimalOverflowGuaranteesFOR TESTING ONLY. DO NOT USE IN PRODUCTION. Please see the decimal section of the compatibility documents for more information on this config.trueRuntime
spark.rapids.sql.delta.lowShuffleMerge.deletionVector.broadcast.thresholdCurrently we need to broadcast deletion vector to all executors to perform low shuffle merge. When we detect the deletion vector broadcast size is larger than this value, we will fallback to normal shuffle merge.20971520Runtime
spark.rapids.sql.delta.lowShuffleMerge.enabledOption to turn on the low shuffle merge for Delta Lake. Currently there are some limitations for this feature: 1. We only support Databricks Runtime 13.3 and Deltalake 2.4. 2. The file scan mode must be set to PERFILE 3. The deletion vector size must be smaller than spark.rapids.sql.delta.lowShuffleMerge.deletionVector.broadcast.thresholdfalseRuntime
spark.rapids.sql.detectDeltaCheckpointQueriesQueries against Delta Lake _delta_log checkpoint Parquet files are not efficient on the GPU. When this option is enabled, the plugin will attempt to detect these queries and fall back to the CPU.trueRuntime
spark.rapids.sql.detectDeltaLogQueriesQueries against Delta Lake _delta_log JSON files are not efficient on the GPU. When this option is enabled, the plugin will attempt to detect these queries and fall back to the CPU.trueRuntime
spark.rapids.sql.exec.opTimeTrackingRDD.enabledEnable OpTimeTrackingRDD for all GPU operations. When true, OpTimeTrackingRDD wrappers will be created to track operation time. When false, can improve performance by avoiding overhead of operation time tracking.trueRuntime
spark.rapids.sql.expression.cpuBridge.enabledEnable CPU-GPU bridge expressions that allow CPU expression subtrees to run while keeping the overall plan on GPU. When enabled, expressions that have no GPU implementation will automatically be wrapped in bridge expressions instead of causing plan fallbacks.trueRuntime
spark.rapids.sql.fast.sampleOption to turn on fast sample. If enable it is inconsistent with CPU sample because of GPU sample algorithm is inconsistent with CPU.falseRuntime
spark.rapids.sql.format.avro.enabledWhen set to true enables all avro input and output acceleration. (only input is currently supported anyways)falseRuntime
spark.rapids.sql.format.avro.multiThreadedRead.maxNumFilesParallelA limit on the maximum number of files per task processed in parallel on the CPU side before the file is sent to the GPU. This affects the amount of host memory used when reading the files in parallel. Used with MULTITHREADED reader, see spark.rapids.sql.format.avro.reader.type.2147483647Runtime
spark.rapids.sql.format.avro.multiThreadedRead.numThreadsThe maximum number of threads, on one executor, to use for reading small Avro files in parallel. This can not be changed at runtime after the executor has started. Used with MULTITHREADED reader, see spark.rapids.sql.format.avro.reader.type. DEPRECATED: use spark.rapids.sql.multiThreadedRead.numThreadsNoneStartup
spark.rapids.sql.format.avro.read.enabledWhen set to true enables avro input accelerationfalseRuntime
spark.rapids.sql.format.avro.reader.typeSets the Avro reader type. We support different types that are optimized for different environments. The original Spark style reader can be selected by setting this to PERFILE which individually reads and copies files to the GPU. Loading many small files individually has high overhead, and using either COALESCING or MULTITHREADED is recommended instead. The COALESCING reader is good when using a local file system where the executors are on the same nodes or close to the nodes the data is being read on. This reader coalesces all the files assigned to a task into a single host buffer before sending it down to the GPU. It copies blocks from a single file into a host buffer in separate threads in parallel, see spark.rapids.sql.multiThreadedRead.numThreads. MULTITHREADED is good for cloud environments where you are reading from a blobstore that is totally separate and likely has a higher I/O read cost. Many times the cloud environments also get better throughput when you have multiple readers in parallel. This reader uses multiple threads to read each file in parallel and each file is sent to the GPU separately. This allows the CPU to keep reading while GPU is also doing work. See spark.rapids.sql.multiThreadedRead.numThreads and spark.rapids.sql.format.avro.multiThreadedRead.maxNumFilesParallel to control the number of threads and amount of memory used. By default this is set to AUTO so we select the reader we think is best. This will either be the COALESCING or the MULTITHREADED based on whether we think the file is in the cloud. See spark.rapids.cloudSchemes.AUTORuntime
spark.rapids.sql.format.csv.enabledWhen set to false disables all csv input and output acceleration. (only input is currently supported anyways)trueRuntime
spark.rapids.sql.format.csv.read.enabledWhen set to false disables csv input accelerationtrueRuntime
spark.rapids.sql.format.delta.write.enabledWhen set to false disables Delta Lake output acceleration.trueRuntime
spark.rapids.sql.format.hive.text.enabledWhen set to false disables Hive text table acceleration. Array/Struct/Map columns are unsupported for acceleration.trueRuntime
spark.rapids.sql.format.hive.text.read.decimal.enabledHive text file reading is not 100% compatible when reading decimals. Hive has more limitations on what is valid compared to the GPU implementation in some corner cases. See https://github.com/NVIDIA/spark-rapids/issues/7246trueRuntime
spark.rapids.sql.format.hive.text.read.double.enabledHive text file reading is not 100% compatible when reading doubles.trueRuntime
spark.rapids.sql.format.hive.text.read.enabledWhen set to false disables Hive text table read acceleration. Array/Struct/Map columns are unsupported for read acceleration.trueRuntime
spark.rapids.sql.format.hive.text.read.float.enabledHive text file reading is not 100% compatible when reading floats.trueRuntime
spark.rapids.sql.format.hive.text.write.enabledWhen set to false disables Hive text table write acceleration. Array/Struct/Map columns are unsupported for write acceleration.trueRuntime
spark.rapids.sql.format.iceberg.enabledWhen set to false disables all Iceberg accelerationtrueRuntime
spark.rapids.sql.format.iceberg.read.enabledWhen set to false disables Iceberg input accelerationtrueRuntime
spark.rapids.sql.format.iceberg.write.enabledWhen set to false disables Iceberg write accelerationtrueRuntime
spark.rapids.sql.format.json.enabledWhen set to true enables all json input and output acceleration. (only input is currently supported anyways)trueRuntime
spark.rapids.sql.format.json.read.enabledWhen set to true enables json input accelerationtrueRuntime
spark.rapids.sql.format.orc.enabledWhen set to false disables all orc input and output accelerationtrueRuntime
spark.rapids.sql.format.orc.floatTypesToString.enableWhen reading an ORC file, the source data schemas(schemas of ORC file) may differ from the target schemas (schemas of the reader), we need to handle the castings from source type to target type. Since float/double numbers in GPU have different precision with CPU, when casting float/double to string, the result of GPU is different from result of CPU spark. Its default value is true (this means the strings result will differ from result of CPU). If it's set false explicitly and there exists casting from float/double to string in the job, then such behavior will cause an exception, and the job will fail.trueRuntime
spark.rapids.sql.format.orc.multiThreadedRead.maxNumFilesParallelA limit on the maximum number of files per task processed in parallel on the CPU side before the file is sent to the GPU. This affects the amount of host memory used when reading the files in parallel. Used with MULTITHREADED reader, see spark.rapids.sql.format.orc.reader.type.2147483647Runtime
spark.rapids.sql.format.orc.multiThreadedRead.numThreadsThe maximum number of threads, on the executor, to use for reading small ORC files in parallel. This can not be changed at runtime after the executor has started. Used with MULTITHREADED reader, see spark.rapids.sql.format.orc.reader.type. DEPRECATED: use spark.rapids.sql.multiThreadedRead.numThreadsNoneStartup
spark.rapids.sql.format.orc.read.enabledWhen set to false disables orc input accelerationtrueRuntime
spark.rapids.sql.format.orc.reader.typeSets the ORC reader type. We support different types that are optimized for different environments. The original Spark style reader can be selected by setting this to PERFILE which individually reads and copies files to the GPU. Loading many small files individually has high overhead, and using either COALESCING or MULTITHREADED is recommended instead. The COALESCING reader is good when using a local file system where the executors are on the same nodes or close to the nodes the data is being read on. This reader coalesces all the files assigned to a task into a single host buffer before sending it down to the GPU. It copies blocks from a single file into a host buffer in separate threads in parallel, see spark.rapids.sql.multiThreadedRead.numThreads. MULTITHREADED is good for cloud environments where you are reading from a blobstore that is totally separate and likely has a higher I/O read cost. Many times the cloud environments also get better throughput when you have multiple readers in parallel. This reader uses multiple threads to read each file in parallel and each file is sent to the GPU separately. This allows the CPU to keep reading while GPU is also doing work. See spark.rapids.sql.multiThreadedRead.numThreads and spark.rapids.sql.format.orc.multiThreadedRead.maxNumFilesParallel to control the number of threads and amount of memory used. By default this is set to AUTO so we select the reader we think is best. This will either be the COALESCING or the MULTITHREADED based on whether we think the file is in the cloud. See spark.rapids.cloudSchemes.AUTORuntime
spark.rapids.sql.format.orc.write.enabledWhen set to false disables orc output accelerationtrueRuntime
spark.rapids.sql.format.parquet.enabledWhen set to false disables all parquet input and output accelerationtrueRuntime
spark.rapids.sql.format.parquet.multiThreadedRead.maxNumFilesParallelA limit on the maximum number of files per task processed in parallel on the CPU side before the file is sent to the GPU. This affects the amount of host memory used when reading the files in parallel. Used with MULTITHREADED reader, see spark.rapids.sql.format.parquet.reader.type.2147483647Runtime
spark.rapids.sql.format.parquet.multiThreadedRead.numThreadsThe maximum number of threads, on the executor, to use for reading small Parquet files in parallel. This can not be changed at runtime after the executor has started. Used with COALESCING and MULTITHREADED reader, see spark.rapids.sql.format.parquet.reader.type. DEPRECATED: use spark.rapids.sql.multiThreadedRead.numThreadsNoneStartup
spark.rapids.sql.format.parquet.multithreaded.combine.sizeBytesThe target size in bytes to combine multiple small files together when using the MULTITHREADED parquet reader. With combine disabled, the MULTITHREADED reader reads the files in parallel and sends individual files down to the GPU, but that can be inefficient for small files. When combine is enabled, files that are ready within spark.rapids.sql.format.parquet.multithreaded.combine.waitTime together, up to this threshold size, are combined before sending down to GPU. This can be disabled by setting it to 0. Note that combine also will not go over the spark.rapids.sql.reader.batchSizeRows or spark.rapids.sql.reader.batchSizeBytes limits. DEPRECATED: use spark.rapids.sql.reader.multithreaded.combine.sizeBytes instead.NoneRuntime
spark.rapids.sql.format.parquet.multithreaded.combine.waitTimeWhen using the multithreaded parquet reader with combine mode, how long to wait, in milliseconds, for more files to finish if haven't met the size threshold. Note that this will wait this amount of time from when the last file was available, so total wait time could be larger then this. DEPRECATED: use spark.rapids.sql.reader.multithreaded.combine.waitTime instead.NoneRuntime
spark.rapids.sql.format.parquet.multithreaded.read.keepOrderWhen using the MULTITHREADED reader, if this is set to true we read the files in the same order Spark does, otherwise the order may not be the same. DEPRECATED: use spark.rapids.sql.reader.multithreaded.read.keepOrder instead.NoneRuntime
spark.rapids.sql.format.parquet.read.enabledWhen set to false disables parquet input accelerationtrueRuntime
spark.rapids.sql.format.parquet.reader.footer.typeIn some cases reading the footer of the file is very expensive. Typically this happens when there are a large number of columns and relatively few of them are being read on a large number of files. This provides the ability to use a different path to parse and filter the footer. AUTO is the default and decides which path to take using a heuristic. JAVA follows closely with what Apache Spark does. NATIVE will parse and filter the footer using C++.AUTORuntime
spark.rapids.sql.format.parquet.reader.typeSets the Parquet reader type. We support different types that are optimized for different environments. The original Spark style reader can be selected by setting this to PERFILE which individually reads and copies files to the GPU. Loading many small files individually has high overhead, and using either COALESCING or MULTITHREADED is recommended instead. The COALESCING reader is good when using a local file system where the executors are on the same nodes or close to the nodes the data is being read on. This reader coalesces all the files assigned to a task into a single host buffer before sending it down to the GPU. It copies blocks from a single file into a host buffer in separate threads in parallel, see spark.rapids.sql.multiThreadedRead.numThreads. MULTITHREADED is good for cloud environments where you are reading from a blobstore that is totally separate and likely has a higher I/O read cost. Many times the cloud environments also get better throughput when you have multiple readers in parallel. This reader uses multiple threads to read each file in parallel and each file is sent to the GPU separately. This allows the CPU to keep reading while GPU is also doing work. See spark.rapids.sql.multiThreadedRead.numThreads and spark.rapids.sql.format.parquet.multiThreadedRead.maxNumFilesParallel to control the number of threads and amount of memory used. By default this is set to AUTO so we select the reader we think is best. This will either be the COALESCING or the MULTITHREADED based on whether we think the file is in the cloud. See spark.rapids.cloudSchemes.AUTORuntime
spark.rapids.sql.format.parquet.write.enabledWhen set to false disables parquet output accelerationtrueRuntime
spark.rapids.sql.format.parquet.writer.int96.enabledWhen set to false, disables accelerated parquet write if the spark.sql.parquet.outputTimestampType is set to INT96trueRuntime
spark.rapids.sql.formatNumberFloat.enabledformat_number with floating point types on the GPU returns results that have a different precision than the default results of Spark.trueRuntime
spark.rapids.sql.hasExtendedYearValuesSpark 3.2.0+ extended parsing of years in dates and timestamps to support the full range of possible values. Prior to this it was limited to a positive 4 digit year. The Accelerator does not support the extended range yet. This config indicates if your data includes this extended range or not, or if you don't care about getting the correct values on values with the extended range.trueRuntime
spark.rapids.sql.hashOptimizeSort.enabledWhether sorts should be inserted after some hashed operations to improve output ordering. This can improve output file sizes when saving to columnar formats.falseRuntime
spark.rapids.sql.improvedFloatOps.enabledFor some floating point operations spark uses one way to compute the value and the underlying cudf implementation can use an improved algorithm. In some cases this can result in cudf producing an answer when spark overflows.trueRuntime
spark.rapids.sql.incompatibleDateFormats.enabledWhen parsing strings as dates and timestamps in functions like unix_timestamp, some formats are fully supported on the GPU and some are unsupported and will fall back to the CPU. Some formats behave differently on the GPU than the CPU. Spark on the CPU interprets date formats with unsupported trailing characters as nulls, while Spark on the GPU will parse the date with invalid trailing characters. More detail can be found at parsing strings as dates or timestamps.falseRuntime
spark.rapids.sql.incompatibleOps.enabledFor operations that work, but are not 100% compatible with the Spark equivalent set if they should be enabled by default or disabled by default.trueRuntime
spark.rapids.sql.join.cross.enabledWhen set to true cross joins are enabled on the GPUtrueRuntime
spark.rapids.sql.join.existence.enabledWhen set to true existence joins are enabled on the GPUtrueRuntime
spark.rapids.sql.join.fullOuter.enabledWhen set to true full outer joins are enabled on the GPUtrueRuntime
spark.rapids.sql.join.inner.enabledWhen set to true inner joins are enabled on the GPUtrueRuntime
spark.rapids.sql.join.leftAnti.enabledWhen set to true left anti joins are enabled on the GPUtrueRuntime
spark.rapids.sql.join.leftOuter.enabledWhen set to true left outer joins are enabled on the GPUtrueRuntime
spark.rapids.sql.join.leftSemi.enabledWhen set to true left semi joins are enabled on the GPUtrueRuntime
spark.rapids.sql.join.rightOuter.enabledWhen set to true right outer joins are enabled on the GPUtrueRuntime
spark.rapids.sql.json.read.datetime.enabledJSON reading is not 100% compatible when reading dates and timestamps.falseRuntime
spark.rapids.sql.json.read.decimal.enabledWhen reading a quoted string as a decimal Spark supports reading non-ascii unicode digits, and the RAPIDS Accelerator does not.trueRuntime
spark.rapids.sql.json.read.double.enabledJSON reading is not 100% compatible when reading doubles.trueRuntime
spark.rapids.sql.json.read.float.enabledJSON reading is not 100% compatible when reading floats.trueRuntime
spark.rapids.sql.lore.dumpPathThe path to dump the LORE nodes' input data. This must be set if spark.rapids.sql.lore.idsToDump has been set. The data of each LORE node will be dumped to a subfolder with name 'loreId-' under this path. For more details, please refer to the LORE documentation.NoneRuntime
spark.rapids.sql.lore.idsToDumpSpecify the LORE ids of operators to dump. The format is a comma separated list of LORE ids. For example: "1[0]" will dump partition 0 of input of gpu operator with lore id 1. For more details, please refer to the LORE documentation. If this is not set, no data will be dumped.NoneRuntime
spark.rapids.sql.lore.nonStrictMode.enabledAllow LoRE dumping to continue when a selected lore id fails. When enabled, failing lore ids are skipped with a warning, previously dumped data under the dump path is kept, and the rest of the query continues executing.falseRuntime
spark.rapids.sql.lore.parquet.useOriginalSchemaNamesWhen enabled, LORE writes Parquet files using the original Spark schema names instead of auto-generated type-based names. This makes the dumped Parquet data easier to consume directly via Spark/other tools.trueRuntime
spark.rapids.sql.modeSet the mode for the Rapids Accelerator. The supported modes are explainOnly and executeOnGPU. This config can not be changed at runtime, you must restart the application for it to take affect. The default mode is executeOnGPU, which means the RAPIDS Accelerator plugin convert the Spark operations and execute them on the GPU when possible. The explainOnly mode allows running queries on the CPU and the RAPIDS Accelerator will evaluate the queries as if it was going to run on the GPU. The explanations of what would have run on the GPU and why are output in log messages. When using explainOnly mode, the default explain output is ALL, this can be changed by setting spark.rapids.sql.explain. See that config for more details.executeongpuStartup
spark.rapids.sql.optimizer.joinReorder.enabledWhen enabled, joins may be reordered for improved query performancetrueRuntime
spark.rapids.sql.python.gpu.enabledThis is an experimental feature and is likely to change in the future. Enable (true) or disable (false) support for scheduling Python Pandas UDFs with GPU resources. When enabled, pandas UDFs are assumed to share the same GPU that the RAPIDs accelerator uses and will honor the python GPU configsfalseRuntime
spark.rapids.sql.reader.chunkedEnable a chunked reader where possible. A chunked reader allows reading highly compressed data that could not be read otherwise, but at the expense of more GPU memory, and in some cases more GPU computation. Currently this only supports ORC and Parquet formats.trueRuntime
spark.rapids.sql.reader.chunked.limitMemoryUsageEnable a soft limit on the internal memory usage of the chunked reader (if being used). Such limit is calculated as the multiplication of 'spark.rapids.sql.batchSizeBytes' and 'spark.rapids.sql.reader.chunked.memoryUsageRatio'.For example, if batchSizeBytes is set to 1GB and memoryUsageRatio is 4, the chunked reader will try to keep its memory usage under 4GB.NoneRuntime
spark.rapids.sql.reader.chunked.subPageEnable a chunked reader where possible for reading data that is smaller than the typical row group/page limit. Currently deprecated and replaced by 'spark.rapids.sql.reader.chunked.limitMemoryUsage'.NoneRuntime
spark.rapids.sql.reader.multithreaded.combine.sizeBytesThe target size in bytes to combine multiple small files together when using the MULTITHREADED parquet or orc reader. With combine disabled, the MULTITHREADED reader reads the files in parallel and sends individual files down to the GPU, but that can be inefficient for small files. When combine is enabled, files that are ready within spark.rapids.sql.reader.multithreaded.combine.waitTime together, up to this threshold size, are combined before sending down to GPU. This can be disabled by setting it to 0. Note that combine also will not go over the spark.rapids.sql.reader.batchSizeRows or spark.rapids.sql.reader.batchSizeBytes limits.67108864Runtime
spark.rapids.sql.reader.multithreaded.combine.waitTimeWhen using the multithreaded parquet or orc reader with combine mode, how long to wait, in milliseconds, for more files to finish if haven't met the size threshold. Note that this will wait this amount of time from when the last file was available, so total wait time could be larger then this.200Runtime
spark.rapids.sql.reader.multithreaded.read.keepOrderWhen using the MULTITHREADED reader, if this is set to true we read the files in the same order Spark does, otherwise the order may not be the same. Now it is supported only for parquet and orc.trueRuntime
spark.rapids.sql.regexp.enabledSpecifies whether supported regular expressions will be evaluated on the GPU. Unsupported expressions will fall back to CPU. However, there are some known edge cases that will still execute on GPU and produce incorrect results and these are documented in the compatibility guide. Setting this config to false will make all regular expressions run on the CPU instead.trueRuntime
spark.rapids.sql.replaceSortMergeJoin.enabledAllow replacing sortMergeJoin with HashJointrueRuntime
spark.rapids.sql.rowBasedUDF.enabledDeprecated. When set to true, enables the legacy row-based UDF path in a GPU operation by transferring only the data it needs between GPU and CPU inside a query operation, instead of falling this operation back to CPU. CPU bridge is the preferred replacement when it can safely bridge the expression, and this config might be removed in the future.falseRuntime
spark.rapids.sql.stableSort.enabledEnable or disable stable sorting. Apache Spark's sorting is typically a stable sort, but sort stability cannot be guaranteed in distributed work loads because the order in which upstream data arrives to a task is not guaranteed. Sort stability then only matters when reading and sorting data from a file using a single task/partition. Because of limitations in the plugin when you enable stable sorting all of the data for a single task will be combined into a single batch before sorting. This currently disables spilling from GPU memory if the data size is too large.falseRuntime
spark.rapids.sql.suppressPlanningFailureOption to fallback an individual query to CPU if an unexpected condition prevents the query plan from being converted to a GPU-enabled one. Note this is different from a normal CPU fallback for a yet-to-be-supported Spark SQL feature. If this happens the error should be reported and investigated as a GitHub issue.falseRuntime
spark.rapids.sql.variableFloatAgg.enabledSpark assumes that all operations produce the exact same result each time. This is not true for some floating point aggregations, which can produce slightly different results on the GPU as the aggregation is done in parallel. This can enable those operations if you know the query is only computing it once.trueRuntime
spark.rapids.sql.window.batched.bounded.row.maxMax value for bounded row window preceding/following extents permissible for the window to be evaluated in batched mode. This value affects both the preceding and following bounds, potentially doubling the window size permitted for batched execution100Runtime
spark.rapids.sql.window.collectList.enabledThe output size of collect list for a window operation is proportional to the window size squared. The current GPU implementation does not handle this well and is disabled by default. If you know that your window size is very small you can try to enable it.falseRuntime
spark.rapids.sql.window.collectSet.enabledThe output size of collect set for a window operation can be proportional to the window size squared. The current GPU implementation does not handle this well and is disabled by default. If you know that your window size is very small you can try to enable it.falseRuntime
spark.rapids.sql.window.range.byte.enabledWhen the order-by column of a range based window is byte type and the range boundary calculated for a value has overflow, CPU and GPU will get the different results. When set to false disables the range window acceleration for the byte type order-by columnfalseRuntime
spark.rapids.sql.window.range.decimal.enabledWhen set to false, this disables the range window acceleration for the DECIMAL type order-by columntrueRuntime
spark.rapids.sql.window.range.double.enabledWhen set to false, this disables the range window acceleration for the double type order-by columntrueRuntime
spark.rapids.sql.window.range.float.enabledWhen set to false, this disables the range window acceleration for the FLOAT type order-by columntrueRuntime
spark.rapids.sql.window.range.int.enabledWhen the order-by column of a range based window is int type and the range boundary calculated for a value has overflow, CPU and GPU will get the different results. When set to false disables the range window acceleration for the int type order-by columntrueRuntime
spark.rapids.sql.window.range.long.enabledWhen the order-by column of a range based window is long type and the range boundary calculated for a value has overflow, CPU and GPU will get the different results. When set to false disables the range window acceleration for the long type order-by columntrueRuntime
spark.rapids.sql.window.range.short.enabledWhen the order-by column of a range based window is short type and the range boundary calculated for a value has overflow, CPU and GPU will get the different results. When set to false disables the range window acceleration for the short type order-by columnfalseRuntime

Supported GPU Operators and Fine Tuning

The RAPIDS Accelerator for Apache Spark can be configured to enable or disable specific GPU accelerated expressions. Enabled expressions are candidates for GPU execution. If the expression is configured as disabled, the accelerator plugin will not attempt replacement, and it will run on the CPU.

Please leverage the spark.rapids.sql.explain setting to get feedback from the plugin as to why parts of a query may not be executing on the GPU.

NOTE: Setting spark.rapids.sql.incompatibleOps.enabled=true will enable all the settings in the table below which are not enabled by default due to incompatibilities.

Expressions

NameSQL Function(s)DescriptionDefault ValueNotes
spark.rapids.sql.expression.AbsabsAbsolute valuetrueNone
spark.rapids.sql.expression.AcosacosInverse cosinetrueNone
spark.rapids.sql.expression.AcoshacoshInverse hyperbolic cosinetrueNone
spark.rapids.sql.expression.Add+AdditiontrueNone
spark.rapids.sql.expression.AliasGives a column a nametrueNone
spark.rapids.sql.expression.AndandLogical ANDtrueNone
spark.rapids.sql.expression.AnsiCastConvert a column of one type of data into another typetrueNone
spark.rapids.sql.expression.ArrayAggregateaggregateAggregate elements in an array using an accumulator function and finishing transformation. Currently only lambdas of the form (acc, x) -> op(acc, g(x)) with an identity finish are executed on the GPU, where op is one of SUM/PRODUCT/MAX/MIN/ALL/ANY. If/CaseWhen branches are accepted as long as each branch is itself op-of-acc (or bare acc) with op consistent across branches; other shapes fall back to CPU. SUM/PRODUCT on float/double share the same parallel-reduction non-determinism as GpuSum and are gated by spark.rapids.sql.variableFloatAgg.enabled. SUM/PRODUCT on integer/decimal in ANSI mode fall back to CPU because cuDF segmented reduce wraps on overflow instead of raising.trueNone
spark.rapids.sql.expression.ArrayContainsarray_containsReturns a boolean if the array contains the passed in keytrueNone
spark.rapids.sql.expression.ArrayDistinctarray_distinctRemoves duplicate values from the arraytrueNone
spark.rapids.sql.expression.ArrayExceptarray_exceptReturns an array of the elements in array1 but not in array2, without duplicatestrueThis is not 100% compatible with the Spark version because the GPU implementation treats -0.0 and 0.0 as equal, but the CPU implementation currently does not (see SPARK-39845). Also, Apache Spark 3.1.3 fixed issue SPARK-36741 where NaNs in these set like operators were not treated as being equal. We have chosen to break with compatibility for the older versions of Spark in this instance and handle NaNs the same as 3.1.3+
spark.rapids.sql.expression.ArrayExistsexistsReturn true if any element satisfies the predicate LambdaFunctiontrueNone
spark.rapids.sql.expression.ArrayFilterfilterFilter an input array using a given predicatetrueNone
spark.rapids.sql.expression.ArrayIntersectarray_intersectReturns an array of the elements in the intersection of array1 and array2, without duplicatestrueThis is not 100% compatible with the Spark version because the GPU implementation treats -0.0 and 0.0 as equal, but the CPU implementation currently does not (see SPARK-39845). Also, Apache Spark 3.1.3 fixed issue SPARK-36741 where NaNs in these set like operators were not treated as being equal. We have chosen to break with compatibility for the older versions of Spark in this instance and handle NaNs the same as 3.1.3+
spark.rapids.sql.expression.ArrayJoinarray_joinConcatenates the elements of the given array using the delimiter and an optional string to replace nulls. If no value is set for nullReplacement, any null value is filtered.trueNone
spark.rapids.sql.expression.ArrayMaxarray_maxReturns the maximum value in the arraytrueNone
spark.rapids.sql.expression.ArrayMinarray_minReturns the minimum value in the arraytrueNone
spark.rapids.sql.expression.ArrayPositionarray_positionReturns the (1-based) index of the first matching element of the array as long, or 0 if no match is found.trueNone
spark.rapids.sql.expression.ArrayRemovearray_removeReturns the array after removing all elements that equal to the input element (right) from the input array (left)trueNone
spark.rapids.sql.expression.ArrayRepeatarray_repeatReturns the array containing the given input value (left) count (right) timestrueNone
spark.rapids.sql.expression.ArraySortarray_sortSorts the input array in ascending order with nulls last according to the natural ordering of the elements (the default comparator). A custom comparator, or a nested element type (array or struct), falls back to the CPUtrueNone
spark.rapids.sql.expression.ArrayTransformtransformTransform elements in an array using the transform function. This is similar to a map in functional programmingtrueNone
spark.rapids.sql.expression.ArrayUnionarray_unionReturns an array of the elements in the union of array1 and array2, without duplicates.trueThis is not 100% compatible with the Spark version because the GPU implementation treats -0.0 and 0.0 as equal, but the CPU implementation currently does not (see SPARK-39845). Also, Apache Spark 3.1.3 fixed issue SPARK-36741 where NaNs in these set like operators were not treated as being equal. We have chosen to break with compatibility for the older versions of Spark in this instance and handle NaNs the same as 3.1.3+
spark.rapids.sql.expression.ArraysOverlaparrays_overlapReturns true if a1 contains at least a non-null element present also in a2. If the arrays have no common element and they are both non-empty and either of them contains a null element null is returned, false otherwise.trueThis is not 100% compatible with the Spark version because the GPU implementation treats -0.0 and 0.0 as equal, but the CPU implementation currently does not (see SPARK-39845). Also, Apache Spark 3.1.3 fixed issue SPARK-36741 where NaNs in these set like operators were not treated as being equal. We have chosen to break with compatibility for the older versions of Spark in this instance and handle NaNs the same as 3.1.3+
spark.rapids.sql.expression.ArraysZiparrays_zipReturns a merged array of structs in which the N-th struct contains all N-th values of input arrays.trueNone
spark.rapids.sql.expression.AsciiasciiThe numeric value of the first character of string data.falseThis is disabled by default because it only supports strings starting with ASCII or Latin-1 characters after Spark 3.2.3, 3.3.1 and 3.4.0. Otherwise the results will not match the CPU.
spark.rapids.sql.expression.AsinasinInverse sinetrueNone
spark.rapids.sql.expression.AsinhasinhInverse hyperbolic sinetrueNone
spark.rapids.sql.expression.AtLeastNNonNullsChecks if number of non null/Nan values is greater than a given valuetrueNone
spark.rapids.sql.expression.AtanatanInverse tangenttrueNone
spark.rapids.sql.expression.AtanhatanhInverse hyperbolic tangenttrueNone
spark.rapids.sql.expression.AttributeReferenceReferences an input columntrueNone
spark.rapids.sql.expression.BRoundbroundRound an expression to d decimal places using HALF_EVEN rounding modetrueNone
spark.rapids.sql.expression.BinbinReturns the string representation of the long value expr represented in binarytrueNone
spark.rapids.sql.expression.BitLengthbit_lengthThe bit length of string datatrueNone
spark.rapids.sql.expression.BitwiseAnd&Returns the bitwise AND of the operandstrueNone
spark.rapids.sql.expression.BitwiseCountbit_countReturns the number of bits that are set in the input as unsigned 64-bit integertrueNone
spark.rapids.sql.expression.BitwiseNot~Returns the bitwise NOT of the operandstrueNone
spark.rapids.sql.expression.BitwiseOr|Returns the bitwise OR of the operandstrueNone
spark.rapids.sql.expression.BitwiseXor^Returns the bitwise XOR of the operandstrueNone
spark.rapids.sql.expression.BloomFilterMightContainBloom filter querytrueNone
spark.rapids.sql.expression.BoundReferenceReference to a bound variabletrueNone
spark.rapids.sql.expression.CaseWhenwhenCASE WHEN expressiontrueNone
spark.rapids.sql.expression.Castbigint, binary, boolean, cast, date, decimal, double, float, int, smallint, string, timestamp, tinyintConvert a column of one type of data into another typetrueNone
spark.rapids.sql.expression.CbrtcbrtCube roottrueNone
spark.rapids.sql.expression.CeilCeiling of a numbertrueNone
spark.rapids.sql.expression.CheckOverflowCheckOverflow after arithmetic operations between DecimalType datatrueNone
spark.rapids.sql.expression.CoalescecoalesceReturns the first non-null argument if exists. Otherwise, nulltrueNone
spark.rapids.sql.expression.ConcatconcatList/String concatenatetrueNone
spark.rapids.sql.expression.ConcatWsconcat_wsConcatenates multiple input strings or array of strings into a single string using a given separatortrueNone
spark.rapids.sql.expression.ContainsContainstrueNone
spark.rapids.sql.expression.ConvconvConvert string representing a number from one base to anothertrueNone
spark.rapids.sql.expression.CoscosCosinetrueNone
spark.rapids.sql.expression.CoshcoshHyperbolic cosinetrueNone
spark.rapids.sql.expression.CotcotCotangenttrueNone
spark.rapids.sql.expression.CreateArrayarrayReturns an array with the given elementstrueNone
spark.rapids.sql.expression.CreateMapmapCreate a maptrueNone
spark.rapids.sql.expression.CreateNamedStructnamed_struct, structCreates a struct with the given field names and valuestrueNone
spark.rapids.sql.expression.CurrentRow$Special boundary for a window frame, indicating stopping at the current rowtrueNone
spark.rapids.sql.expression.DateAdddate_addReturns the date that is num_days after start_datetrueNone
spark.rapids.sql.expression.DateAddIntervalAdds interval to datetrueNone
spark.rapids.sql.expression.DateDiffdatediffReturns the number of days from startDate to endDatetrueNone
spark.rapids.sql.expression.DateFormatClassdate_formatConverts timestamp to a value of string in the format specified by the date formattrueNone
spark.rapids.sql.expression.DateSubdate_subReturns the date that is num_days before start_datetrueNone
spark.rapids.sql.expression.DayOfMonthday, dayofmonthReturns the day of the month from a date or timestamptrueNone
spark.rapids.sql.expression.DayOfWeekdayofweekReturns the day of the week (1 = Sunday...7=Saturday)trueNone
spark.rapids.sql.expression.DayOfYeardayofyearReturns the day of the year from a date or timestamptrueNone
spark.rapids.sql.expression.DenseRankdense_rankWindow function that returns the dense rank value within the aggregation windowtrueNone
spark.rapids.sql.expression.Divide/DivisiontrueNone
spark.rapids.sql.expression.DivideDTIntervalDay-time interval * operatortrueNone
spark.rapids.sql.expression.DivideYMIntervalYear-month interval / numbertrueNone
spark.rapids.sql.expression.DynamicPruningExpressionDynamic pruning expression markertrueNone
spark.rapids.sql.expression.ElementAtelement_atReturns element of array at given(1-based) index in value if column is array. Returns value for the given key in value if column is map.trueNone
spark.rapids.sql.expression.EndsWithEnds withtrueNone
spark.rapids.sql.expression.EqualNullSafe<=>Check if the values are equal including nulls <=>trueNone
spark.rapids.sql.expression.EqualTo==, =Check if the values are equaltrueNone
spark.rapids.sql.expression.ExpexpEuler's number e raised to a powertrueNone
spark.rapids.sql.expression.Explodeexplode_outer, explodeGiven an input array produces a sequence of rows for each value in the arraytrueNone
spark.rapids.sql.expression.Expm1expm1Euler's number e raised to a power minus 1trueNone
spark.rapids.sql.expression.FlattenflattenCreates a single array from an array of arraystrueNone
spark.rapids.sql.expression.FloorFloor of a numbertrueNone
spark.rapids.sql.expression.FormatNumberformat_numberFormats the number x like '#,###,###.##', rounded to d decimal places.trueNone
spark.rapids.sql.expression.FromUTCTimestampfrom_utc_timestampRender the input UTC timestamp in the input timezonetrueNone
spark.rapids.sql.expression.FromUnixTimefrom_unixtimeGet the string from a unix timestamptrueNone
spark.rapids.sql.expression.GetArrayItemGets the field at ordinal in the ArraytrueNone
spark.rapids.sql.expression.GetArrayStructFieldsExtracts the ordinal-th fields of all array elements for the data with the type of array of structtrueNone
spark.rapids.sql.expression.GetJsonObjectget_json_objectExtracts a json object from pathtrueNone
spark.rapids.sql.expression.GetMapValueGets Value from a Map based on a keytrueNone
spark.rapids.sql.expression.GetStructFieldGets the named field of the structtrueNone
spark.rapids.sql.expression.GetTimestampGets timestamps from strings using given pattern.trueNone
spark.rapids.sql.expression.GreaterThan>> operatortrueNone
spark.rapids.sql.expression.GreaterThanOrEqual>=>= operatortrueNone
spark.rapids.sql.expression.GreatestgreatestReturns the greatest value of all parameters, skipping null valuestrueNone
spark.rapids.sql.expression.HexhexReturns the hex string representation of a valuetrueNone
spark.rapids.sql.expression.HiveHashhive hash operatortrueNone
spark.rapids.sql.expression.HourhourReturns the hour component of the string/timestamptrueNone
spark.rapids.sql.expression.HypothypotPythagorean addition (Hypotenuse) of real numberstrueNone
spark.rapids.sql.expression.IfifIF expressiontrueNone
spark.rapids.sql.expression.IninIN operatortrueNone
spark.rapids.sql.expression.InSetINSET operatortrueNone
spark.rapids.sql.expression.InitCapinitcapReturns str with the first letter of each word in uppercase. All other letters are in lowercasetrueThis is not 100% compatible with the Spark version because the Unicode version used by cuDF and the JVM may differ, resulting in some corner-case characters not changing case correctly.
spark.rapids.sql.expression.InputFileBlockLengthinput_file_block_lengthReturns the length of the block being read, or -1 if not availabletrueNone
spark.rapids.sql.expression.InputFileBlockStartinput_file_block_startReturns the start offset of the block being read, or -1 if not availabletrueNone
spark.rapids.sql.expression.InputFileNameinput_file_nameReturns the name of the file being read, or empty string if not availabletrueNone
spark.rapids.sql.expression.IntegralDividedivDivision with a integer resulttrueNone
spark.rapids.sql.expression.IsNaNisnanChecks if a value is NaNtrueNone
spark.rapids.sql.expression.IsNotNullisnotnullChecks if a value is not nulltrueNone
spark.rapids.sql.expression.IsNullisnullChecks if a value is nulltrueNone
spark.rapids.sql.expression.JsonToStructsfrom_jsonReturns a struct value with the given jsonStr and schematrueNone
spark.rapids.sql.expression.JsonTuplejson_tupleReturns a tuple like the function get_json_object, but it takes multiple names. All the input parameters and output column types are string.trueNone
spark.rapids.sql.expression.KnownFloatingPointNormalizedTag to prevent redundant normalizationtrueNone
spark.rapids.sql.expression.KnownNotNullTag an expression as known to not be nulltrueNone
spark.rapids.sql.expression.LaglagWindow function that returns N entries behind this onetrueNone
spark.rapids.sql.expression.LambdaFunctionHolds a higher order SQL functiontrueNone
spark.rapids.sql.expression.LastDaylast_dayReturns the last day of the month which the date belongs totrueNone
spark.rapids.sql.expression.LeadleadWindow function that returns N entries ahead of this onetrueNone
spark.rapids.sql.expression.LeastleastReturns the least value of all parameters, skipping null valuestrueNone
spark.rapids.sql.expression.Lengthchar_length, character_length, lengthString character length or binary byte lengthtrueNone
spark.rapids.sql.expression.LessThan<< operatortrueNone
spark.rapids.sql.expression.LessThanOrEqual<=<= operatortrueNone
spark.rapids.sql.expression.LikelikeLiketrueNone
spark.rapids.sql.expression.LiteralHolds a static value from the querytrueNone
spark.rapids.sql.expression.LoglnNatural logtrueNone
spark.rapids.sql.expression.Log10log10Log base 10trueNone
spark.rapids.sql.expression.Log1plog1pNatural log 1 + exprtrueNone
spark.rapids.sql.expression.Log2log2Log base 2trueNone
spark.rapids.sql.expression.LogarithmlogLog variable basetrueNone
spark.rapids.sql.expression.Lowerlcase, lowerString lowercase operatortrueThis is not 100% compatible with the Spark version because the Unicode version used by cuDF and the JVM may differ, resulting in some corner-case characters not changing case correctly.
spark.rapids.sql.expression.MakeDecimalCreate a Decimal from an unscaled long value for some aggregation optimizationstrueNone
spark.rapids.sql.expression.MapConcatmap_concatReturns the union of all the given mapstrueNone
spark.rapids.sql.expression.MapEntriesmap_entriesReturns an unordered array of all entries in the given maptrueNone
spark.rapids.sql.expression.MapFiltermap_filterFilters entries in a map using the functiontrueNone
spark.rapids.sql.expression.MapFromArraysmap_from_arraysCreates a new map from two arraystrueNone
spark.rapids.sql.expression.MapFromEntriesmap_from_entriesCreates a map from an array of entries (structs of key-value pairs)trueNone
spark.rapids.sql.expression.MapKeysmap_keysReturns an unordered array containing the keys of the maptrueNone
spark.rapids.sql.expression.MapValuesmap_valuesReturns an unordered array containing the values of the maptrueNone
spark.rapids.sql.expression.MapZipWithmap_zip_withFilters entries in a map using the functiontrueNone
spark.rapids.sql.expression.Md5md5MD5 hash operatortrueNone
spark.rapids.sql.expression.MicrosToTimestamptimestamp_microsConverts the number of microseconds from unix epoch to a timestamptrueNone
spark.rapids.sql.expression.MillisToTimestamptimestamp_millisConverts the number of milliseconds from unix epoch to a timestamptrueNone
spark.rapids.sql.expression.MinuteminuteReturns the minute component of the string/timestamptrueNone
spark.rapids.sql.expression.MonotonicallyIncreasingIDmonotonically_increasing_idReturns monotonically increasing 64-bit integerstrueNone
spark.rapids.sql.expression.MonthmonthReturns the month from a date or timestamptrueNone
spark.rapids.sql.expression.MonthsBetweenmonths_betweenIf timestamp1 is later than timestamp2, then the result is positive. If timestamp1 and timestamp2 are on the same day of month, or both are the last day of month, time of day will be ignored. Otherwise, the difference is calculated based on 31 days per month, and rounded to 8 digits unless roundOff=false.trueNone
spark.rapids.sql.expression.Multiply*MultiplicationtrueNone
spark.rapids.sql.expression.MultiplyDTIntervalDay-time interval * numbertrueNone
spark.rapids.sql.expression.MultiplyYMIntervalYear-month interval * numbertrueNone
spark.rapids.sql.expression.Murmur3HashhashMurmur3 hash operatortrueNone
spark.rapids.sql.expression.NaNvlnanvlEvaluates to left iff left is not NaN, right otherwisetrueNone
spark.rapids.sql.expression.NamedLambdaVariableA parameter to a higher order SQL functiontrueNone
spark.rapids.sql.expression.Not!, notBoolean not operatortrueNone
spark.rapids.sql.expression.NthValuenth_valuenth window operatortrueNone
spark.rapids.sql.expression.OctetLengthoctet_lengthThe byte length of string datatrueNone
spark.rapids.sql.expression.OrorLogical ORtrueNone
spark.rapids.sql.expression.ParseUrlparse_urlExtracts a part from a URLtrueNone
spark.rapids.sql.expression.PercentRankpercent_rankWindow function that returns the percent rank value within the aggregation windowtrueNone
spark.rapids.sql.expression.PmodpmodPmodtrueNone
spark.rapids.sql.expression.PosExplodeposexplode_outer, posexplodeGiven an input array produces a sequence of rows for each value in the arraytrueNone
spark.rapids.sql.expression.Powpow, powerlhs ^ rhstrueNone
spark.rapids.sql.expression.PreciseTimestampConversionExpression used internally to convert the TimestampType to Long and back without losing precision, i.e. in microseconds. Used in time windowingtrueNone
spark.rapids.sql.expression.PromotePrecisionPromotePrecision before arithmetic operations between DecimalType datatrueNone
spark.rapids.sql.expression.PythonUDFUDF run in an external python process. Does not actually run on the GPU, but the transfer of data to/from it can be acceleratedtrueNone
spark.rapids.sql.expression.QuarterquarterReturns the quarter of the year for date, in the range 1 to 4trueNone
spark.rapids.sql.expression.RLikeregexp_like, regexp, rlikeRegular expression version of LiketrueNone
spark.rapids.sql.expression.RaiseErrorraise_errorThrow an exceptiontrueNone
spark.rapids.sql.expression.Randrand, randomGenerate a random column with i.i.d. uniformly distributed values in [0, 1)trueNone
spark.rapids.sql.expression.RankrankWindow function that returns the rank value within the aggregation windowtrueNone
spark.rapids.sql.expression.RegExpExtractregexp_extractExtract a specific group identified by a regular expressiontrueNone
spark.rapids.sql.expression.RegExpExtractAllregexp_extract_allExtract all strings matching a regular expression corresponding to the regex group indextrueNone
spark.rapids.sql.expression.RegExpReplaceregexp_replaceString replace using a regular expression patterntrueNone
spark.rapids.sql.expression.Remainder%, modRemainder or modulotrueNone
spark.rapids.sql.expression.ReplicateRowsGiven an input row replicates the row N timestrueNone
spark.rapids.sql.expression.ReversereverseReturns a reversed string or an array with reverse order of elementstrueNone
spark.rapids.sql.expression.RintrintRounds up a double value to the nearest double equal to an integertrueNone
spark.rapids.sql.expression.RoundroundRound an expression to d decimal places using HALF_UP rounding modetrueNone
spark.rapids.sql.expression.RoundCeilComputes the ceiling of the given expression to d decimal placestrueNone
spark.rapids.sql.expression.RoundFloorComputes the floor of the given expression to d decimal placestrueNone
spark.rapids.sql.expression.RowNumberrow_numberWindow function that returns the index for the row within the aggregation windowtrueNone
spark.rapids.sql.expression.ScalaUDFUser Defined Function, the UDF can choose to implement a RAPIDS accelerated interface to get better performance.trueNone
spark.rapids.sql.expression.SecondsecondReturns the second component of the string/timestamptrueNone
spark.rapids.sql.expression.SecondsToTimestamptimestamp_secondsConverts the number of seconds from unix epoch to a timestamptrueNone
spark.rapids.sql.expression.SequencesequenceSequencetrueNone
spark.rapids.sql.expression.Sha1sha1, shaSha1 hash operatortrueNone
spark.rapids.sql.expression.Sha2sha2Sha2 hash operatortrueNone
spark.rapids.sql.expression.ShiftLeftshiftleftBitwise shift left (<<)trueNone
spark.rapids.sql.expression.ShiftRightshiftrightBitwise shift right (>>)trueNone
spark.rapids.sql.expression.ShiftRightUnsignedshiftrightunsignedBitwise unsigned shift right (>>>)trueNone
spark.rapids.sql.expression.Signumsign, signumReturns -1.0, 0.0 or 1.0 as expr is negative, 0 or positivetrueNone
spark.rapids.sql.expression.SinsinSinetrueNone
spark.rapids.sql.expression.SinhsinhHyperbolic sinetrueNone
spark.rapids.sql.expression.Sizecardinality, sizeThe size of an array or a maptrueNone
spark.rapids.sql.expression.SlicesliceSubsets array x starting from index start (array indices start at 1, or starting from the end if start is negative) with the specified length.trueNone
spark.rapids.sql.expression.SortArraysort_arrayReturns a sorted array with the input array and the ascending / descending ordertrueNone
spark.rapids.sql.expression.SortOrderSort ordertrueNone
spark.rapids.sql.expression.SparkPartitionIDspark_partition_idReturns the current partition idtrueNone
spark.rapids.sql.expression.SpecifiedWindowFrameSpecification of the width of the group (or "frame") of input rows around which a window function is evaluatedtrueNone
spark.rapids.sql.expression.SqrtsqrtSquare roottrueNone
spark.rapids.sql.expression.StackstackSeparates expr1, ..., exprk into n rows.trueNone
spark.rapids.sql.expression.StartsWithStarts withtrueNone
spark.rapids.sql.expression.StringDecodeDecodes binary data from a charset to a UTF-8 stringtrueNone
spark.rapids.sql.expression.StringInstrinstrInstr string operatortrueNone
spark.rapids.sql.expression.StringLPadPad a string on the lefttrueNone
spark.rapids.sql.expression.StringLocatelocate, positionSubstring search operatortrueNone
spark.rapids.sql.expression.StringRPadPad a string on the righttrueNone
spark.rapids.sql.expression.StringRepeatrepeatStringRepeat operator that repeats the given strings with numbers of times given by repeatTimestrueNone
spark.rapids.sql.expression.StringReplacereplaceStringReplace operatortrueNone
spark.rapids.sql.expression.StringSplitsplitSplits str around occurrences that match regextrueNone
spark.rapids.sql.expression.StringToMapstr_to_mapCreates a map after splitting the input string into pairs of key-value stringstrueNone
spark.rapids.sql.expression.StringTranslatetranslateStringTranslate operatortrueThis is not 100% compatible with the Spark version because the GPU implementation supports all unicode code points. In Spark versions < 3.2.0, translate() does not support unicode characters with code point >= U+10000 (See SPARK-34094)
spark.rapids.sql.expression.StringTrimtrimStringTrim operatortrueNone
spark.rapids.sql.expression.StringTrimLeftltrimStringTrimLeft operatortrueNone
spark.rapids.sql.expression.StringTrimRightrtrimStringTrimRight operatortrueNone
spark.rapids.sql.expression.StructsToJsonto_jsonConverts structs to JSON text formatfalseThis is disabled by default because it is currently in beta and undergoes continuous enhancements. Please consult the compatibility documentation to determine whether you can enable this configuration for your use case
spark.rapids.sql.expression.Substringsubstr, substringSubstring operatortrueNone
spark.rapids.sql.expression.SubstringIndexsubstring_indexsubstring_index operatortrueNone
spark.rapids.sql.expression.Subtract-SubtractiontrueNone
spark.rapids.sql.expression.TantanTangenttrueNone
spark.rapids.sql.expression.TanhtanhHyperbolic tangenttrueNone
spark.rapids.sql.expression.TimeAddAdds interval to timestamptrueNone
spark.rapids.sql.expression.ToDegreesdegreesConverts radians to degreestrueNone
spark.rapids.sql.expression.ToRadiansradiansConverts degrees to radianstrueNone
spark.rapids.sql.expression.ToUTCTimestampto_utc_timestampRender the input timestamp in UTCtrueNone
spark.rapids.sql.expression.ToUnixTimestampto_unix_timestampReturns the UNIX timestamp of the given timetrueNone
spark.rapids.sql.expression.TransformKeystransform_keysTransform keys in a map using a transform functiontrueNone
spark.rapids.sql.expression.TransformValuestransform_valuesTransform values in a map using a transform functiontrueNone
spark.rapids.sql.expression.TruncDatetruncTruncate the date to the unit specified by the given string formattrueNone
spark.rapids.sql.expression.TruncTimestampdate_truncTruncate the timestamp to the unit specified by the given string formattrueNone
spark.rapids.sql.expression.UnaryMinusnegativeNegate a numeric valuetrueNone
spark.rapids.sql.expression.UnaryPositivepositiveA numeric value with a + in front of ittrueNone
spark.rapids.sql.expression.UnboundedFollowing$Special boundary for a window frame, indicating all rows preceding the current rowtrueNone
spark.rapids.sql.expression.UnboundedPreceding$Special boundary for a window frame, indicating all rows preceding the current rowtrueNone
spark.rapids.sql.expression.UnixTimestampunix_timestampReturns the UNIX timestamp of current or specified timetrueNone
spark.rapids.sql.expression.UnscaledValueConvert a Decimal to an unscaled long value for some aggregation optimizationstrueNone
spark.rapids.sql.expression.Upperucase, upperString uppercase operatortrueThis is not 100% compatible with the Spark version because the Unicode version used by cuDF and the JVM may differ, resulting in some corner-case characters not changing case correctly.
spark.rapids.sql.expression.UuiduuidUuidtrueNone
spark.rapids.sql.expression.WeekDayweekdayReturns the day of the week (0 = Monday...6=Sunday)trueNone
spark.rapids.sql.expression.WindowExpressionCalculates a return value for every input row of a table based on a group (or "window") of rowstrueNone
spark.rapids.sql.expression.WindowSpecDefinitionSpecification of a window function, indicating the partitioning-expression, the row ordering, and the width of the windowtrueNone
spark.rapids.sql.expression.XxHash64xxhash64xxhash64 hash operatortrueNone
spark.rapids.sql.expression.YearyearReturns the year from a date or timestamptrueNone
spark.rapids.sql.expression.AggregateExpressionAggregate expressiontrueNone
spark.rapids.sql.expression.ApproximatePercentileapprox_percentile, percentile_approxApproximate percentiletrueThis is not 100% compatible with the Spark version because the GPU implementation of approx_percentile is not bit-for-bit compatible with Apache Spark
spark.rapids.sql.expression.Averageavg, meanAverage aggregate operatortrueNone
spark.rapids.sql.expression.BitAndAggbit_andReturns the bitwise AND of all non-null input valuestrueNone
spark.rapids.sql.expression.BitOrAggbit_orReturns the bitwise OR of all non-null input valuestrueNone
spark.rapids.sql.expression.BitXorAggbit_xorReturns the bitwise XOR of all non-null input valuestrueNone
spark.rapids.sql.expression.BloomFilterAggregateBloom filter buildtrueNone
spark.rapids.sql.expression.CollectListarray_agg, collect_listCollect a list of non-unique elements, not supported in reductiontrueNone
spark.rapids.sql.expression.CollectSetcollect_setCollect a set of unique elements, not supported in reductiontrueNone
spark.rapids.sql.expression.CountcountCount aggregate operatortrueNone
spark.rapids.sql.expression.Firstfirst_value, firstfirst aggregate operatortrueNone
spark.rapids.sql.expression.HyperLogLogPlusPlusapprox_count_distinctAggregation approximate count distincttrueNone
spark.rapids.sql.expression.Lastlast_value, lastlast aggregate operatortrueNone
spark.rapids.sql.expression.MaxmaxMax aggregate operatortrueNone
spark.rapids.sql.expression.MaxBymax_byMaxBy aggregate operator. It may produce different results than CPU when multiple rows in a group have same minimum value in the ordering column and different associated values in the value column.trueNone
spark.rapids.sql.expression.MinminMin aggregate operatortrueNone
spark.rapids.sql.expression.MinBymin_byMinBy aggregate operator. It may produce different results than CPU when multiple rows in a group have same minimum value in the ordering column and different associated values in the value column.trueNone
spark.rapids.sql.expression.PercentilepercentileAggregation computing exact percentiletrueNone
spark.rapids.sql.expression.PivotFirstPivotFirst operatortrueNone
spark.rapids.sql.expression.StddevPopstddev_popAggregation computing population standard deviationtrueNone
spark.rapids.sql.expression.StddevSampstd, stddev_samp, stddevAggregation computing sample standard deviationtrueNone
spark.rapids.sql.expression.SumsumSum aggregate operatortrueNone
spark.rapids.sql.expression.VariancePopvar_popAggregation computing population variancetrueNone
spark.rapids.sql.expression.VarianceSampvar_samp, varianceAggregation computing sample variancetrueNone
spark.rapids.sql.expression.StaticInvokeStaticInvoketrueThe supported types are not deterministic since it's a dynamic expression
spark.rapids.sql.expression.NormalizeNaNAndZeroNormalize NaN and zerotrueNone
spark.rapids.sql.expression.InSubqueryExecEvaluates to true if values are in a subquery's result settrueNone
spark.rapids.sql.expression.ScalarSubquerySubquery that will return only one row and one columntrueNone
spark.rapids.sql.expression.HiveGenericUDFHive Generic UDF, the UDF can choose to implement a RAPIDS accelerated interface to get better performancetrueNone
spark.rapids.sql.expression.HiveSimpleUDFHive UDF, the UDF can choose to implement a RAPIDS accelerated interface to get better performancetrueNone

Execution

NameDescriptionDefault ValueNotes
spark.rapids.sql.exec.CoalesceExecThe backend for the dataframe coalesce methodtrueNone
spark.rapids.sql.exec.CollectLimitExecReduce to single partition and apply limitfalseThis is disabled by default because Collect Limit replacement can be slower on the GPU, if huge number of rows in a batch it could help by limiting the number of rows transferred from GPU to CPU
spark.rapids.sql.exec.ExpandExecThe backend for the expand operatortrueNone
spark.rapids.sql.exec.FileSourceScanExecReading data from files, often from Hive tablestrueNone
spark.rapids.sql.exec.FilterExecThe backend for most filter statementstrueNone
spark.rapids.sql.exec.GenerateExecThe backend for operations that generate more output rows than input rows like explodetrueNone
spark.rapids.sql.exec.GlobalLimitExecLimiting of results across partitionstrueNone
spark.rapids.sql.exec.LocalLimitExecPer-partition limiting of resultstrueNone
spark.rapids.sql.exec.ProjectExecThe backend for most select, withColumn and dropColumn statementstrueNone
spark.rapids.sql.exec.RangeExecThe backend for range operatortrueNone
spark.rapids.sql.exec.SampleExecThe backend for the sample operatortrueNone
spark.rapids.sql.exec.SortExecThe backend for the sort operatortrueNone
spark.rapids.sql.exec.SubqueryBroadcastExecPlan to collect and transform the broadcast key valuestrueNone
spark.rapids.sql.exec.TakeOrderedAndProjectExecTake the first limit elements as defined by the sortOrder, and do projection if neededtrueNone
spark.rapids.sql.exec.UnionExecThe backend for the union operatortrueNone
spark.rapids.sql.exec.AQEShuffleReadExecA wrapper of shuffle query stagetrueNone
spark.rapids.sql.exec.HashAggregateExecThe backend for hash based aggregationstrueNone
spark.rapids.sql.exec.ObjectHashAggregateExecThe backend for hash based aggregations supporting TypedImperativeAggregate functionstrueNone
spark.rapids.sql.exec.SortAggregateExecThe backend for sort based aggregationstrueNone
spark.rapids.sql.exec.InMemoryTableScanExecImplementation of InMemoryTableScanExec to use GPU accelerated cachingtrueNone
spark.rapids.sql.exec.DataWritingCommandExecWriting datatrueNone
spark.rapids.sql.exec.ExecutedCommandExecEagerly executed commandstrueNone
spark.rapids.sql.exec.AppendDataExecV1Append data into a datasource V2 table using the V1 write interfacetrueNone
spark.rapids.sql.exec.AtomicCreateTableAsSelectExecCreate table as select for datasource V2 tables that support staging table creationtrueNone
spark.rapids.sql.exec.AtomicReplaceTableAsSelectExecReplace table as select for datasource V2 tables that support staging table creationtrueNone
spark.rapids.sql.exec.BatchScanExecThe backend for most file inputtrueNone
spark.rapids.sql.exec.OverwriteByExpressionExecV1Overwrite into a datasource V2 table using the V1 write interfacetrueNone
spark.rapids.sql.exec.BroadcastExchangeExecThe backend for broadcast exchange of datatrueNone
spark.rapids.sql.exec.ShuffleExchangeExecThe backend for most data being exchanged between processestrueNone
spark.rapids.sql.exec.BroadcastHashJoinExecImplementation of join using broadcast datatrueNone
spark.rapids.sql.exec.BroadcastNestedLoopJoinExecImplementation of join using brute force. Full outer joins and joins where the broadcast side matches the join side (e.g.: LeftOuter with left broadcast) are not supportedtrueNone
spark.rapids.sql.exec.CartesianProductExecImplementation of join using brute forcetrueNone
spark.rapids.sql.exec.ShuffledHashJoinExecImplementation of join using hashed shuffled datatrueNone
spark.rapids.sql.exec.SortMergeJoinExecSort merge join, replacing with shuffled hash jointrueNone
spark.rapids.sql.exec.AggregateInPandasExecThe backend for an Aggregation Pandas UDF. This accelerates the data transfer between the Java process and the Python process. It also supports scheduling GPU resources for the Python process when enabled.trueNone
spark.rapids.sql.exec.ArrowEvalPythonExecThe backend of the Scalar Pandas UDFs. Accelerates the data transfer between the Java process and the Python process. It also supports scheduling GPU resources for the Python process when enabledtrueNone
spark.rapids.sql.exec.FlatMapCoGroupsInPandasExecThe backend for CoGrouped Aggregation Pandas UDF. Accelerates the data transfer between the Java process and the Python process. It also supports scheduling GPU resources for the Python process when enabled.falseThis is disabled by default because Performance is not ideal with many small groups
spark.rapids.sql.exec.FlatMapGroupsInPandasExecThe backend for Flat Map Groups Pandas UDF, Accelerates the data transfer between the Java process and the Python process. It also supports scheduling GPU resources for the Python process when enabled.trueNone
spark.rapids.sql.exec.MapInPandasExecThe backend for Map Pandas Iterator UDF. Accelerates the data transfer between the Java process and the Python process. It also supports scheduling GPU resources for the Python process when enabled.trueNone
spark.rapids.sql.exec.PythonMapInArrowExecThe backend for Map Arrow Iterator UDF. Accelerates the data transfer between the Java process and the Python process. It also supports scheduling GPU resources for the Python process when enabled.trueNone
spark.rapids.sql.exec.WindowInPandasExecThe backend for Window Aggregation Pandas UDF, Accelerates the data transfer between the Java process and the Python process. It also supports scheduling GPU resources for the Python process when enabled. For now it only supports row based window frame.falseThis is disabled by default because it only supports row based frame for now
spark.rapids.sql.exec.WindowExecWindow-operator backendtrueNone
spark.rapids.sql.exec.HiveTableScanExecScan Exec to read Hive delimited text tablestrueNone

Commands

NameDescriptionDefault ValueNotes
spark.rapids.sql.command.SaveIntoDataSourceCommandWrite to a data sourcetrueNone

Scans

NameDescriptionDefault ValueNotes
spark.rapids.sql.input.CSVScanCSV parsingtrueNone
spark.rapids.sql.input.JsonScanJson parsingtrueNone
spark.rapids.sql.input.OrcScanORC parsingtrueNone
spark.rapids.sql.input.ParquetScanParquet parsingtrueNone
spark.rapids.sql.input.AvroScanAvro parsingtrueNone

Partitioning

NameDescriptionDefault ValueNotes
spark.rapids.sql.partitioning.HashPartitioningHash based partitioningtrueNone
spark.rapids.sql.partitioning.RangePartitioningRange partitioningtrueNone
spark.rapids.sql.partitioning.RoundRobinPartitioningRound robin partitioningtrueNone
spark.rapids.sql.partitioning.SinglePartition$Single partitioningtrueNone