RAPIDS Accelerator for Apache Spark 配置#
以下是 rapids-plugin-4-spark
支持的选项列表。
在启动时使用:--conf [conf key]=[conf value]
。例如
1${SPARK_HOME}/bin/spark-shell --jars rapids-4-spark_2.12-23.02.0-cuda11.jar \
2--conf spark.plugins=com.nvidia.spark.SQLPlugin \
3--conf spark.rapids.sql.concurrentGpuTasks=2
在运行时使用:spark.conf.set("[conf key]", [conf value])
。例如
scala> spark.conf.set("spark.rapids.sql.concurrentGpuTasks", 2)
所有配置都可以在启动时设置,但某些配置(尤其是对于 Shuffle)如果在运行时设置则不起作用。请查看“适用时间”列,以了解何时可以设置配置。“启动”表示仅在启动时有效,“运行时”表示在启动和运行时均有效。
常规配置#
名称 |
描述 |
默认值 |
适用时间 |
---|---|---|---|
spark.rapi ds.alluxio.aut omount.enabled |
启用将云存储自动挂载到 Alluxio 的功能。它要求 Alluxio master 与 Spark 驱动程序节点是同一节点。当为 true 时,它要求正确设置环境变量 ALLUXIO_HOME。ALLUXIO_HOME 的默认值为“/opt/a lluxio-2.8.0”。您可以在运行 spark-submit 时将其设置为环境变量,也可以使用 spark.ya rn.appMasterEn v.ALLUXIO_HOME 在 Yarn 上设置它。Alluxio master 的主机和端口将从 ALLUXIO_HOME/c onf/alluxio-si te.properties 中的 alluxio.m aster.hostname 和 allu xio.master.rpc .port(默认值:19998)读取,然后将与 spark .rapids.alluxi o.bucket.regex 匹配的云路径(如“s 3://bar/b.csv”)替换为“alluxio ://0.1.2.3:199 98/bar/b.csv”,并且 bucket “s3://bar” 将自动挂载到 Alluxio 中的“/bar”。 |
false |
运行时 |
spark .rapids.alluxi o.bucket.regex |
用于决定应将哪个 bucket 自动挂载到 Alluxio 的正则表达式。例如,当设置为“^s3 ://bucket.*”时,以“s3://bucket”开头的 bucket 将挂载到 Alluxio,路径“s3://buc ket-foo/a.csv”将被替换为“ alluxio://0.1. 2.3:19998/buck et-foo/a.csv”。仅当设置 sp ark.rapids.all uxio.automount .enabled=true 时才有效。默认值匹配 “s3://” 或 “s3a://” 方案中的所有 bucket。 |
^ s3a{0,1}://.* |
运行时 |
spark.rapids. alluxio.large. file.threshold |
该阈值用于识别从 S3 读取时文件平均大小是否较大。如果从 S3 读取大文件并且 Alluxio 使用的磁盘速度较慢,则直接从 S3 读取比从 Alluxio 读取缓存更好,因为 S3 网络带宽比本地磁盘更快。当启用 sp ark.rapids.all uxio.slow.disk 时,此改进生效。 |
67108864 |
运行时 |
spark.r apids.alluxio. pathsToReplace |
要替换为相应 Alluxio 方案的路径列表。例如,当配置设置为“s3://fo o->alluxio://0 .1.2.3:19998/f oo,gs://bar->a lluxio://0.1.2 .3:19998/bar”时,表示:“s 3://foo/a.csv”将被替换为“alluxi o://0.1.2.3:19 998/foo/a.csv”,并且“g s://bar/b.csv”将被替换为“alluxio ://0.1.2.3:199 98/bar/b.csv”。要使用此配置,您必须自行将 bucket 挂载到 Alluxio。如果您设置此配置,则 spark.rapi ds.alluxio.aut omount.enabled 将无效。 |
无 |
启动 |
spark.rap ids.alluxio.re placement.algo |
将 UFS 路径替换为 Alluxio 路径时使用的算法。CONVERT_TIME 和 TASK_TIME 是有效选项。CONVERT_TIME 表示我们在将其转换为 GPU 文件读取时执行此操作,这会增加创建全新文件索引的额外开销,这需要列出文件并从 Alluxio 获取所有新文件信息。TASK_TIME 在任务内部尽可能晚地替换路径。通过等待并在任务时间替换它,它仅替换路径而无需再次获取文件信息,这更快,但如果这对比性能有一定影响,则不会更新位置信息。 |
TASK_TIME |
运行时 |
sp ark.rapids.all uxio.slow.disk |
指示 Alluxio 使用的磁盘是否速度较慢。如果为 true 且读取 S3 大文件,则 Rapids Accelerator 直接从 S3 读取,而不是从 Alluxio 缓存读取。请参阅 spark.rapids. alluxio.large. file.threshold,其中定义了用于识别文件是否较大的阈值。通常,如果速度小于 300M/秒,则为慢速磁盘。如果使用转换时间 spark.rapi ds.alluxio.rep lacement.algo,则这可能不适用于所有文件类型,例如 Delta 文件 |
true |
运行时 |
spark.rapid s.alluxio.user |
Alluxio 用户在 Alluxio 客户端上设置,用于挂载或获取信息。默认情况下,它应该是运行 Alluxio 进程的用户。默认值为 ubuntu。 |
ubuntu |
运行时 |
spark.rapid s.cloudSchemes |
以逗号分隔的附加 URI 方案列表,这些方案将被视为基于云的文件系统。已包含的方案:abfs、abfss、dbfs、gs、s3、s3a、s3n、wasbs。基于云的存储通常与执行程序完全分离,并且可能具有更高的 I/O 读取成本。很多时候,当您有多个并行读取器时,云文件系统也会获得更好的吞吐量。这与 s park.rapids.sq l.format.parqu et.reader.type 一起使用 |
无 |
运行时 |
s park.rapids.gp u.resourceName |
Spark 资源名称,表示您希望插件使用的 GPU(如果将自定义资源与 Spark 结合使用)。 |
gpu |
启动 |
spark.rap ids.memory.gpu .allocFraction |
应为池化内存分配的可用(空闲)GPU 内存的比例。此值必须小于或等于通过 spark.rapids. memory.gpu.max AllocFraction 配置的最大限制,并且大于或等于通过 spark.rapids. memory.gpu.min AllocFraction 配置的最小限制。 |
1.0 |
启动 |
s park.rapids.me mory.gpu.debug |
提供 GPU 内存分配和释放的日志。如果设置为 STDOUT 或 STDERR,则日志将转到此处。将其设置为 NONE 会禁用日志记录。所有其他值都保留用于可能的未来扩展,并且在过渡期间将禁用日志记录。 |
NONE |
启动 |
spark.rapi ds.memory.gpu. direct.storage .spill.batchWr iteBuffer.size |
用于批量处理溢出到 GDS 时的小缓冲区的 GPU 内存缓冲区的大小。请注意,此缓冲区映射到 PCI 基地址寄存器 (BAR) 空间,这在某些 GPU 上可能非常有限(例如,NVIDIA T4 只有 256 MiB),并且 UCX 弹跳缓冲区也使用它。 |
8388608 |
启动 |
spark.rapi ds.memory.gpu. direct.storage .spill.enabled |
是否应使用 GPUDirect Storage (GDS) 将 GPU 内存缓冲区直接溢出到磁盘。必须启用 GDS,并且目录 |
false |
启动 |
spark.rapids .memory.gpu.ma xAllocFraction |
限制 RMM 池最大大小的总 GPU 内存的比例。该值必须大于或等于 spark.rapi ds.memory.gpu. allocFraction 的设置。请注意,此限制将因 spar k.rapids.memor y.gpu.reserve 中配置的保留内存而减少。 |
1.0 |
启动 |
spark.rapids .memory.gpu.mi nAllocFraction |
限制 RMM 池最小大小的总 GPU 内存的比例。该值必须小于或等于 spark.rapi ds.memory.gpu. allocFraction 的设置。 |
0.25 |
启动 |
spark. rapids.memory. gpu.oomDumpDir |
本地目录的路径,如果 GPU 遇到无法恢复的内存不足 (OOM) 错误,则将在其中创建堆转储。文件名将采用以下形式:“gp u-oom–.hprof”,其中 是进程 ID,dumpId 是一个序列号,用于消除每个进程生命周期中多个堆转储的歧义 |
无 |
启动 |
spark.rapids.m emory.gpu.pool |
选择要使用的 RMM 池化分配器。有效值为“DEFAULT”、“ARENA”、“ASYNC”和“NONE”。使用“DEFAULT”时,使用 RMM 池分配器;使用“ARENA”时,使用 RMM 竞技场分配器;使用“ASYNC”时,使用 CUDA 11.2+ 中的新 CUDA 流排序内存分配器。如果设置为“NONE”,则禁用池化,RMM 只直接传递到 CUDA 内存分配。 |
ASYNC |
启动 |
spark.rapid s.memory.gpu.p ooling.enabled |
RMM 应充当 GPU 内存的池化分配器,还是仅直接传递到 CUDA 内存分配。已弃用:请改用 spark.rapids.m emory.gpu.pool。 |
true |
启动 |
spa rk.rapids.memo ry.gpu.reserve |
应保持 RMM 未分配并留给系统使用的 GPU 内存量,例如内核和内核启动所需的内存。 |
671088640 |
启动 |
spark.rapid s.memory.gpu.u nspill.enabled |
当再次需要溢出的 GPU 缓冲区时,应取消溢出,还是仅临时复制回 GPU 内存。取消溢出对于经常需要的 GPU 缓冲区(例如,广播变量)可能很有用;但是,它也可能增加 GPU 内存使用量 |
false |
启动 |
spark.rapids.m emory.host.pag eablePool.size |
分页内存池的大小(以字节为单位),除非另有说明。使用 0 禁用池。 |
1073741824 |
启动 |
spark.rapids. memory.host.sp illStorageSize |
用于缓冲溢出到本地磁盘之前的溢出 GPU 数据的非堆主机内存量。使用 -1 将该量设置为固定内存池和分页内存池的组合大小。 |
-1 |
启动 |
spark.r apids.memory.p innedPool.size |
固定内存池的大小(以字节为单位),除非另有说明。使用 0 禁用池。 |
0 |
启动 |
s park.rapids.py thon.concurren tPythonWorkers |
设置每个 GPU 可以并发执行的 Python 工作进程数。当同一执行程序启动的并发 Python 工作进程数超过此数量时,Python 工作进程可能会暂时阻塞。在同一 GPU 上允许太多并发任务可能会导致 GPU 内存不足错误。>0 表示启用,而 <=0 表示无限制 |
0 |
运行时 |
sp ark.rapids.pyt hon.memory.gpu .allocFraction |
应为所有 Python 工作进程的池化内存初始分配的总 GPU 内存的比例。它应该小于 (1 - $(spark.rapids .memory.gpu.al locFraction)),因为执行程序将与其拥有的 Python 工作进程共享 GPU。如果未指定,则将使用剩余部分的一半 |
无 |
运行时 |
spark .rapids.python .memory.gpu.ma xAllocFraction |
限制所有 Python 工作进程的 RMM 池最大大小的总 GPU 内存的比例。它应该小于 (1 - $(s park.rapids.me mory.gpu.maxAl locFraction)),因为执行程序将与其拥有的 Python 工作进程共享 GPU。设置为 0 时表示无限制。 |
0.0 |
运行时 |
spar k.rapids.pytho n.memory.gpu.p ooling.enabled |
Python 工作进程中的 RMM 应充当 GPU 内存的池化分配器,还是仅直接传递到 CUDA 内存分配。如果未指定,它将遵循配置 “spark.rapids .memory.gpu.po oling.enabled” 的值 |
无 |
运行时 |
spark.rapids.s huffle.enabled |
在运行时启用或禁用 RAPIDS Shuffle 管理器。RAPIDS Shuffle 管理器 必须已配置。当设置为 |
true |
运行时 |
spark.rapid s.shuffle.mode |
RAPIDS Shuffle 管理器模式。“M ULTITHREADED”:shuffle 文件写入和读取使用线程池并行化。“UCX”:(需要安装 UCX)使用加速传输来传输 shuffle 块。“CACHE_ONLY”:在运行单个执行程序时使用,用于短路缓存 shuffle(用于测试目的)。 |
MULTITHREADED |
启动 |
spark.rap ids.shuffle.mu ltiThreaded.ma xBytesInFlight |
以字节为单位的大小限制,以限制以 “ MULTITHREADED” 模式配置的 RAPIDS shuffle 管理器允许每个任务并发反序列化的字节数。这也是每个任务将使用的最大内存量。理想情况下,这应至少与批处理大小相同,这样我们就不必等待处理单个批处理。 |
2147483647 |
启动 |
spark.r apids.shuffle. multiThreaded. reader.threads |
在以 “ MULTITHREADED” 模式配置的 RAPIDS shuffle 管理器中,每个执行程序用于读取 shuffle 块的线程数。有两个特殊值:0 = 功能已禁用,回退到 Spark 内置 shuffle 读取器;1 = 我们实现的 Spark 内置 shuffle 读取器,带有额外的指标。 |
20 |
启动 |
spark.r apids.shuffle. multiThreaded. writer.threads |
在以 “ MULTITHREADED” 模式配置的 RAPIDS shuffle 管理器中,每个执行程序用于写入 shuffle 块的线程数。有两个特殊值:0 = 功能已禁用,回退到 Spark 内置 shuffle 写入器;1 = 我们实现的 Spark 内置 shuffle 写入器,带有额外的指标。 |
20 |
启动 |
spark.rapids. shuffle.transp ort.earlyStart |
为 RAPIDS Shuffle 启用早期连接建立 |
true |
启动 |
spa rk.rapids.shuf fle.transport. earlyStart.hea rtbeatInterval |
Shuffle 早期启动心跳间隔(毫秒)。执行程序将在此间隔向驱动程序发送心跳 RPC 消息 |
5000 |
启动 |
sp ark.rapids.shu ffle.transport .earlyStart.he artbeatTimeout |
Shuffle 早期启动心跳超时(毫秒)。在此超时时间内未发送心跳的执行程序将被视为过时。此超时时间必须高于 spa rk.rapids.shuf fle.transport. earlyStart.hea rtbeatInterval 的值 |
10000 |
启动 |
spark.rapids .shuffle.trans port.maxReceiv eInflightBytes |
在 shuffle 期间,在任何给定时间可以从对等方提取的最大聚合字节数 |
1073741824 |
启动 |
spark.r apids.shuffle. ucx.activeMess ages.forceRndv |
设置为 true 以强制所有 UCX Active Messages 使用 “rndv” 模式。这应该仅在 UCX 1.10.x 中需要。UCX 1.11.x 部署应设置为 false。 |
false |
启动 |
spa rk.rapids.shuf fle.ucx.manage mentServerHost |
用于启动管理服务器的主机 |
null |
启动 |
spark. rapids.shuffle .ucx.useWakeup |
设置为 true 时,使用 UCX 的基于事件的进度 (epoll) 以在需要时唤醒进度线程,而不是热循环。 |
true |
启动 |
spa rk.rapids.sql. batchSizeBytes |
设置 GPU 批处理的目标字节数。输入数据拆分大小由单独的配置覆盖。最大设置为 2 GB,以避免超过列的 cudf 行计数限制。 |
2147483647 |
运行时 |
s park.rapids.sq l.castDecimalT oFloat.enabled |
在 GPU 上从 decimal 类型转换为浮点类型返回的结果与 CPU 返回的结果相比略有差异。 |
true |
运行时 |
sp ark.rapids.sql .castDecimalTo String.enabled |
设置为 true 时,GPU 上支持从 decimal 类型转换为 string 类型。GPU 生成的字符串与 Spark 生成的字符串不完全相同,但生成的字符串在语义上是相等的。例如,给定输入 B igDecimal(123, -2),GPU 生成 “12300”,而 Spark 生成 “1.23E+4”。 |
false |
运行时 |
s park.rapids.sq l.castFloatToD ecimal.enabled |
在 GPU 上从浮点类型转换为 decimal 类型返回的结果与 CPU 返回的结果相比略有差异。 |
true |
运行时 |
spark.r apids.sql.cast FloatToIntegra lTypes.enabled |
当使用 Spark 3.1.0 或更高版本时,在 GPU 上从浮点类型转换为整数类型支持略有不同的值范围。有关更多详细信息,请参阅 CAST 文档。 |
true |
运行时 |
spark.rapids.s ql.castFloatTo String.enabled |
在 GPU 上从浮点类型转换为 string 类型返回的结果与 Spark 的默认结果相比具有不同的精度。 |
true |
运行时 |
spark.rapids.s ql.castStringT oFloat.enabled |
设置为 true 时,启用在 GPU 上从字符串转换为浮点类型(float、double)。当前 GPU 上不支持十六进制值。另请注意,当字符串表示任何数字 “1.7976931 348623158E308” <= x < “1.7976931 348623159E308” 和 “-1.7976931 348623158E308” >= x > “-1.7976931 348623159E308” 时,在 GPU 上从字符串转换为浮点类型会返回不正确的结果,在这两种情况下,GPU 都返回 D ouble.MaxValue,而 CPU 分别返回 “+Infinity” 和 “-Infinity” |
true |
运行时 |
spar k.rapids.sql.c astStringToTim estamp.enabled |
设置为 true 时,GPU 上支持从字符串转换为时间戳。在将字符串转换为时间戳时,GPU 仅支持格式的子集。有关更多详细信息,请参阅 CAST 文档。 |
false |
运行时 |
spark.rapi ds.sql.coalesc ing.reader.num FilterParallel |
这控制合并读取器在筛选要读取的块时将在每个线程中运行的文件数。如果此值大于零,则将以多线程方式筛选文件,其中每个线程筛选由此配置设置的文件数。如果将其设置为零,则将串行筛选文件。这使用与多线程读取器相同的线程池,请参阅 spar k.rapids.sql.m ultiThreadedRe ad.numThreads。请注意,多线程筛选对于 Alluxio 非常有用。 |
0 |
运行时 |
spark.r apids.sql.conc urrentGpuTasks |
设置每个 GPU 可以并发执行的任务数。当执行程序中的并发任务数超过此数量时,任务可能会暂时阻塞。在同一 GPU 上允许太多并发任务可能会导致 GPU 内存不足错误。 |
1 |
运行时 |
spark.rap ids.sql.concur rentWriterPart itionFlushSize |
每个分区的并发写入器缓存的刷新大小(以字节为单位)。如果指定了 spark.sql.max ConcurrentOutp utFileWriters,则使用并发写入器写入数据。并发写入器首先缓存每个分区的数据,如果发现一个分区的大小大于或等于此配置,则开始刷新数据。默认值为 0,这将尝试根据文件类型特定的配置选择大小。例如:它对 Parquet 类型使用 |
0 |
运行时 |
spark.rapids. sql.csv.read.d ecimal.enabled |
读取 decimal 类型时,CSV 读取不是 100% 兼容的。 |
false |
运行时 |
spark.rapids .sql.csv.read. double.enabled |
读取 double 类型时,CSV 读取不是 100% 兼容的。 |
true |
运行时 |
spark.rapid s.sql.csv.read .float.enabled |
读取 float 类型时,CSV 读取不是 100% 兼容的。 |
true |
运行时 |
spark.rapids.s ql.decimalOver flowGuarantees |
仅用于测试。请勿在生产环境中使用。有关此配置的更多信息,请参阅兼容性文档的 decimal 部分。 |
true |
运行时 |
spa rk.rapids.sql. detectDeltaChe ckpointQueries |
针对 Delta Lake _delta_log 检查点 Parquet 文件的查询在 GPU 上效率不高。启用此选项后,插件将尝试检测这些查询并回退到 CPU。 |
true |
运行时 |
spark.rapi ds.sql.detectD eltaLogQueries |
针对 Delta Lake _delta_log JSON 文件的查询在 GPU 上效率不高。启用此选项后,插件将尝试检测这些查询并回退到 CPU。 |
true |
运行时 |
spark.rapi ds.sql.enabled |
在 GPU 上启用 (true) 或禁用 (false) sql 操作 |
true |
运行时 |
spark.rapi ds.sql.explain |
解释为什么查询的某些部分未放置在 GPU 上或未放置。可能的值为 ALL:打印所有内容,NONE:不打印任何内容,NOT_ON_GPU:仅打印未在 GPU 上执行的查询部分 |
NOT_ON_GPU |
运行时 |
spark.rapids.s ql.fast.sample |
打开快速采样的选项。如果启用,则与 CPU 采样不一致,因为 GPU 采样算法与 CPU 不一致。 |
false |
运行时 |
spark.ra pids.sql.forma t.avro.enabled |
设置为 true 时,启用所有 avro 输入和输出加速。(无论如何,目前仅支持输入) |
false |
运行时 |
spark.rapi ds.sql.format. avro.multiThre adedRead.maxNu mFilesParallel |
在将文件发送到 GPU 之前,每个任务在 CPU 端并行处理的最大文件数的限制。这会影响并行读取文件时使用的主机内存量。与 MULTITHREADED 读取器一起使用,请参阅 spark.rapids. sql.format.avr o.reader.type。 |
2147483647 |
运行时 |
s park.rapids.sq l.format.avro. multiThreadedR ead.numThreads |
在一个执行程序上,用于并行读取小型 Avro 文件的最大线程数。这在执行程序启动后无法在运行时更改。与 MULTITHREADED 读取器一起使用,请参阅 spark.rapids. sql.format.avr o.reader.type。已弃用:请使用 spa rk.rapids.sql. multiThreadedR ead.numThreads |
无 |
启动 |
spark.rapids. sql.format.avr o.read.enabled |
设置为 true 时,启用 avro 输入加速 |
false |
运行时 |
spark.rapids .sql.format.av ro.reader.type |
设置 Avro 读取器类型。我们支持针对不同环境优化的不同类型。可以通过将此设置为 PERFILE 来选择原始 Spark 样式读取器,该读取器单独读取文件并将文件复制到 GPU。单独加载许多小型文件具有很高的开销,建议改用 COALESCING 或 MULTITHREADED。当使用本地文件系统时,COALESCING 读取器非常适合,其中执行程序与正在读取数据的节点位于同一节点或靠近节点。此读取器将分配给任务的所有文件合并到单个主机缓冲区中,然后再将其发送到 GPU。它在单独的线程中并行地将来自单个文件的块复制到主机缓冲区中,请参阅 spar k.rapids.sql.m ultiThreadedRe ad.numThreads。MULTITHREADED 适用于云环境,在云环境中,您从完全分离且可能具有更高 I/O 读取成本的 blobstore 读取。很多时候,云环境在您有多个并行读取器时也会获得更好的吞吐量。此读取器使用多个线程并行读取每个文件,并且每个文件都单独发送到 GPU。这允许 CPU 在 GPU 也在工作时保持读取状态。请参阅 spa rk.rapids.sql. multiThreadedR ead.numThreads 和 spark.rapi ds.sql.format. avro.multiThre adedRead.maxNu mFilesParallel 以控制线程数和使用的内存量。默认情况下,这设置为 AUTO,以便我们选择我们认为最佳的读取器。这将是 COALESCING 或 MULTITHREADED,具体取决于我们是否认为文件在云中。请参阅 spark.rapids .cloudSchemes。 |
AUTO |
运行时 |
spark.r apids.sql.form at.csv.enabled |
设置为 false 时,禁用所有 csv 输入和输出加速。(无论如何,目前仅支持输入) |
true |
运行时 |
spark.rapids .sql.format.cs v.read.enabled |
设置为 false 时,禁用 csv 输入加速 |
true |
运行时 |
s park.rapids.sq l.format.delta .write.enabled |
设置为 false 时,禁用 Delta Lake 输出加速。 |
true |
运行时 |
spark.rapids. sql.format.hiv e.text.enabled |
设置为 false 时,禁用 Hive 文本表加速 |
true |
运行时 |
spark.rapids .sql.format.hi ve.text.read.d ecimal.enabled |
读取 decimal 类型时,Hive 文本文件读取不是 100% 兼容的。与 GPU 实现相比,Hive 在某些极端情况下对什么是有效值有更多限制。请参阅 https:// github.com/NVI DIA/spark-rapi ds/issues/7246 |
true |
运行时 |
spark.rapid s.sql.format.h ive.text.read. double.enabled |
读取 double 类型时,Hive 文本文件读取不是 100% 兼容的。 |
true |
运行时 |
spar k.rapids.sql.f ormat.hive.tex t.read.enabled |
设置为 false 时,禁用 Hive 文本表读取加速 |
true |
运行时 |
spark.rapi ds.sql.format. hive.text.read .float.enabled |
读取 float 类型时,Hive 文本文件读取不是 100% 兼容的。 |
true |
运行时 |
spark .rapids.sql.fo rmat.hive.text .write.enabled |
设置为 false 时,禁用 Hive 文本表写入加速 |
false |
运行时 |
spark.rapid s.sql.format.i ceberg.enabled |
设置为 false 时,禁用所有 Iceberg 加速 |
true |
运行时 |
sp ark.rapids.sql .format.iceber g.read.enabled |
设置为 false 时,禁用 Iceberg 输入加速 |
true |
运行时 |
spark.ra pids.sql.forma t.json.enabled |
设置为 true 时,启用所有 json 输入和输出加速。(无论如何,目前仅支持输入) |
false |
运行时 |
spark.rapids. sql.format.jso n.read.enabled |
设置为 true 时,启用 json 输入加速 |
false |
运行时 |
spark.r apids.sql.form at.orc.enabled |
设置为 false 时,禁用所有 orc 输入和输出加速 |
true |
运行时 |
spark.rapid s.sql.format.o rc.floatTypesT oString.enable |
读取 ORC 文件时,源数据模式(ORC 文件的模式)可能与目标模式(读取器的模式)不同,我们需要处理从源类型到目标类型的转换。由于 GPU 中的 float/double 数字与 CPU 的精度不同,因此当将 float/double 转换为字符串时,GPU 的结果与 CPU Spark 的结果不同。其默认值为 |
true |
运行时 |
spark.rap ids.sql.format .orc.multiThre adedRead.maxNu mFilesParallel |
在将文件发送到 GPU 之前,每个任务在 CPU 端并行处理的最大文件数的限制。这会影响并行读取文件时使用的主机内存量。与 MULTITHREADED 读取器一起使用,请参阅 spark.rapids .sql.format.or c.reader.type。 |
2147483647 |
运行时 |
spark.rapids.s ql.format.orc. multiThreadedR ead.numThreads |
在一个执行程序上,用于并行读取小型 ORC 文件的最大线程数。这在执行程序启动后无法在运行时更改。与 MULTITHREADED 读取器一起使用,请参阅 spark.rapids .sql.format.or c.reader.type。已弃用:请使用 spa rk.rapids.sql. multiThreadedR ead.numThreads |
无 |
启动 |
spark.rapids .sql.format.or c.read.enabled |
设置为 false 时,禁用 orc 输入加速 |
true |
运行时 |
spark.rapid s.sql.format.o rc.reader.type |
设置 ORC 读取器类型。我们支持针对不同环境优化的不同类型。可以通过将此设置为 PERFILE 来选择原始 Spark 样式读取器,该读取器单独读取文件并将文件复制到 GPU。单独加载许多小型文件具有很高的开销,建议改用 COALESCING 或 MULTITHREADED。当使用本地文件系统时,COALESCING 读取器非常适合,其中执行程序与正在读取数据的节点位于同一节点或靠近节点。此读取器将分配给任务的所有文件合并到单个主机缓冲区中,然后再将其发送到 GPU。它在单独的线程中并行地将来自单个文件的块复制到主机缓冲区中,请参阅 spar k.rapids.sql.m ultiThreadedRe ad.numThreads。MULTITHREADED 适用于云环境,在云环境中,您从完全分离且可能具有更高 I/O 读取成本的 blobstore 读取。很多时候,云环境在您有多个并行读取器时也会获得更好的吞吐量。此读取器使用多个线程并行读取每个文件,并且每个文件都单独发送到 GPU。这允许 CPU 在 GPU 也在工作时保持读取状态。请参阅 spa rk.rapids.sql. multiThreadedR ead.numThreads 和 spark.rapids. sql.format .orc.multiThre adedRead.maxNu mFilesParallel 以控制线程数和使用的内存量。默认情况下,这设置为 AUTO,以便我们选择我们认为最佳的读取器。这将是 COALESCING 或 MULTITHREADED,具体取决于我们是否认为文件在云中。请参阅 spark.rapids .cloudSchemes。 |
AUTO |
运行时 |
spark.rapids. sql.format.orc .write.enabled |
设置为 false 时,禁用 orc 输出加速 |
true |
运行时 |
spark.rapid s.sql.format.p arquet.enabled |
设置为 false 时,禁用所有 parquet 输入和输出加速 |
true |
运行时 |
spark.rapids. sql.format.par quet.multiThre adedRead.maxNu mFilesParallel |
在将文件发送到 GPU 之前,每个任务在 CPU 端并行处理的最大文件数的限制。这会影响并行读取文件时使用的主机内存量。与 MULTITHREADED 读取器一起使用,请参阅 sp ark.rapids.sql .format.parque t.reader.type。 |
2147483647 |
运行时 |
spar k.rapids.sql.f ormat.parquet. multiThreadedR ead.numThreads |
在一个执行程序上,用于并行读取小型 Parquet 文件的最大线程数。这在执行程序启动后无法在运行时更改。与 COALESCING 和 MULTITHREADED 读取器一起使用,请参阅 sp ark.rapids.sql .format.parque t.reader.type。已弃用:请使用 spa rk.rapids.sql. multiThreadedR ead.numThreads |
无 |
启动 |
spark.r apids.sql.form at.parquet.mul tithreaded.com bine.sizeBytes |
使用 MULTITHREADED parquet 读取器时,将多个小型文件组合在一起的目标大小(以字节为单位)。禁用组合后,MULTITHREADED 读取器并行读取文件并将单个文件发送到 GPU,但这对于小型文件来说效率低下。启用组合后,在 spark. rapids.sql.for mat.parquet.mu ltithreaded.co mbine.waitTime 内准备就绪的文件将一起组合,直到达到此阈值大小,然后再发送到 GPU。可以通过将其设置为 0 来禁用此功能。请注意,组合也不会超过 spark.rap ids.sql.reader .batchSizeRows 或 spark.rapi ds.sql.reader. batchSizeBytes 限制。 |
67108864 |
运行时 |
spark. rapids.sql.for mat.parquet.mu ltithreaded.co mbine.waitTime |
当将多线程 parquet 读取器与组合模式一起使用时,如果尚未达到大小阈值,则等待更多文件完成的时间(以毫秒为单位)。请注意,这将从最后一个文件可用时开始等待此时间量,因此总等待时间可能大于此时间。 |
200 |
运行时 |
spar k.rapids.sql.f ormat.parquet. multithreaded. read.keepOrder |
当使用 MULTITHREADED 读取器时,如果将其设置为 true,我们将按照 Spark 执行的相同顺序读取文件,否则顺序可能不相同。 |
true |
运行时 |
sp ark.rapids.sql .format.parque t.read.enabled |
设置为 false 时,禁用 parquet 输入加速 |
true |
运行时 |
spark.ra pids.sql.forma t.parquet.read er.footer.type |
在某些情况下,读取文件的页脚非常耗时。通常,当列数很多,而正在读取的列相对较少的文件数量很大时,会发生这种情况。这提供了使用不同路径来解析和筛选页脚的功能。AUTO 是默认值,并使用启发式方法决定要采用的路径。JAVA 与 Apache Spark 的做法非常接近。NATIVE 将使用 C++ 解析和筛选页脚。 |
AUTO |
运行时 |
s park.rapids.sq l.format.parqu et.reader.type |
设置 Parquet 读取器类型。我们支持针对不同环境优化的不同类型。可以通过将此设置为 PERFILE 来选择原始 Spark 样式读取器,该读取器单独读取文件并将文件复制到 GPU。单独加载许多小型文件具有很高的开销,建议改用 COALESCING 或 MULTITHREADED。当使用本地文件系统时,COALESCING 读取器非常适合,其中执行程序与正在读取数据的节点位于同一节点或靠近节点。此读取器将分配给任务的所有文件合并到单个主机缓冲区中,然后再将其发送到 GPU。它在单独的线程中并行地将来自单个文件的块复制到主机缓冲区中,请参阅 spar k.rapids.sql.m ultiThreadedRe ad.numThreads。MULTITHREADED 适用于云环境,在云环境中,您从完全分离且可能具有更高 I/O 读取成本的 blobstore 读取。很多时候,云环境在您有多个并行读取器时也会获得更好的吞吐量。此读取器使用多个线程并行读取每个文件,并且每个文件都单独发送到 GPU。这允许 CPU 在 GPU 也在工作时保持读取状态。请参阅 spa rk.rapids.sql. multiThreadedR ead.numThreads 和 spark.rapids. sql.format.par quet.multiThre adedRead.maxNu mFilesParallel 以控制线程数和使用的内存量。默认情况下,这设置为 AUTO,以便我们选择我们认为最佳的读取器。这将是 COALESCING 或 MULTITHREADED,具体取决于我们是否认为文件在云中。请参阅 spark.rapids .cloudSchemes。 |
AUTO |
运行时 |
spa rk.rapids.sql. format.parquet .write.enabled |
设置为 false 时,禁用 parquet 输出加速 |
true |
运行时 |
spark.rapi ds.sql.format. parquet.writer .int96.enabled |
设置为 false 时,如果 spark.sql .parquet.outpu tTimestampType 设置为 INT96,则禁用加速 parquet 写入 |
true |
运行时 |
spark.rapi ds.sql.hasExte ndedYearValues |
Spark 3.2.0+ 扩展了日期和时间戳中年份的解析,以支持所有可能的值范围。在此之前,它仅限于正四位数字年份。Accelerator 尚不支持扩展范围。此配置指示您的数据是否包含此扩展范围,或者您是否不关心在扩展范围值上获得正确的值。 |
true |
运行时 |
spark.rapids. sql.hashOptimi zeSort.enabled |
是否应该在某些哈希操作后插入排序以改进输出顺序。当保存为列式格式时,这可以提高输出文件大小。 |
false |
运行时 |
spark.rapids. sql.improvedFl oatOps.enabled |
对于某些浮点运算,Spark 使用一种方法来计算值,而底层的 cuDF 实现可以使用改进的算法。在某些情况下,当 Spark 溢出时,cuDF 可以生成答案。 |
true |
运行时 |
spark.rapids .sql.improvedT imeOps.enabled |
设置为 true 时,某些运算符将避免溢出,方法是将 epoch 天数直接转换为秒,而无需先转换为微秒 |
false |
运行时 |
spark. rapids.sql.inc ompatibleDateF ormats.enabled |
在像 unix_timestamp 这样的函数中将字符串解析为日期和时间戳时,某些格式在 GPU 上完全支持,而某些格式不受支持,将回退到 CPU。某些格式在 GPU 上的行为与 CPU 上的行为不同。在 CPU 上,Spark 将带有不支持的尾随字符的日期格式解释为 null,而 GPU 上的 Spark 将解析带有无效尾随字符的日期。更多详细信息可以在 将字符串解析为日期或时间戳 中找到。 |
false |
运行时 |
spark.rapids .sql.incompati bleOps.enabled |
对于可以工作但与 Spark 等效项并非 100% 兼容的操作,设置它们应该默认启用还是默认禁用。 |
true |
运行时 |
spark.r apids.sql.join .cross.enabled |
设置为 true 时,GPU 上启用交叉连接 |
true |
运行时 |
spark.rapid s.sql.join.exi stence.enabled |
设置为 true 时,GPU 上启用存在连接 |
true |
运行时 |
spark.rapid s.sql.join.ful lOuter.enabled |
设置为 true 时,GPU 上启用全外连接 |
true |
运行时 |
spark.r apids.sql.join .inner.enabled |
设置为 true 时,GPU 上启用内连接 |
true |
运行时 |
spark.rapi ds.sql.join.le ftAnti.enabled |
设置为 true 时,GPU 上启用左反连接 |
true |
运行时 |
spark.rapid s.sql.join.lef tOuter.enabled |
设置为 true 时,GPU 上启用左外连接 |
true |
运行时 |
spark.rapi ds.sql.join.le ftSemi.enabled |
设置为 true 时,GPU 上启用左半连接 |
true |
运行时 |
spark.rapids .sql.join.righ tOuter.enabled |
设置为 true 时,GPU 上启用右外连接 |
true |
运行时 |
spark.rapids.s ql.json.read.d ecimal.enabled |
读取十进制数时,JSON 读取并非 100% 兼容。 |
false |
运行时 |
spark.rapids. sql.json.read. double.enabled |
读取双精度浮点数时,JSON 读取并非 100% 兼容。 |
true |
运行时 |
spark.rapids .sql.json.read .float.enabled |
读取单精度浮点数时,JSON 读取并非 100% 兼容。 |
true |
运行时 |
sp ark.rapids.sql .metrics.level |
GPU 计划可以生成比 CPU 计划多得多的指标。在非常大的查询中,这有时会导致超出驱动程序的最大结果大小限制。支持的值包括 DEBUG,它将启用所有支持的指标,通常仅在调试插件时需要启用。MODERATE 应该输出足够的指标来了解查询的每个部分花费的时间以及多少数据流向查询的每个部分。ESSENTIAL 禁用大多数指标,除了 Apache Spark CPU 计划也会报告的指标或其等效项。 |
MODERATE |
运行时 |
spark.r apids.sql.mode |
设置 Rapids 加速器的模式。支持的模式为 explainOnly 和 executeOnGPU。此配置无法在运行时更改,您必须重新启动应用程序才能使其生效。默认模式为 executeOnGPU,这意味着 RAPIDS Accelerator 插件会转换 Spark 操作并在可能的情况下在 GPU 上执行它们。explainOnly 模式允许在 CPU 上运行查询,RAPIDS Accelerator 将评估查询,就像它将在 GPU 上运行一样。有关将在 GPU 上运行的内容以及原因的解释将输出在日志消息中。使用 explainOnly 模式时,默认的 explain 输出为 ALL,这可以通过设置 spark.rapid s.sql.explain 来更改。有关更多详细信息,请参阅该配置。 |
executeongpu |
启动 |
spa rk.rapids.sql. multiThreadedR ead.numThreads |
每个执行器上用于并行读取小文件的最大线程数。在执行器启动后,这无法在运行时更改。与 COALESCING 和 MULTITHREADED 读取器一起使用,请参阅 sp ark.rapids.sql .format.parque t.reader.type, spark.rapids .sql.format.or c.reader.type, 或 spark.rapids .sql.format.av ro.reader.type 以了解读取器类型的讨论。如果未显式设置且 spark. executor.cores 已设置,则将尝试赋值为 |
20 |
启动 |
spark.r apids.sql.pyth on.gpu.enabled |
这是一个实验性功能,将来可能会更改。启用 (true) 或禁用 (false) 对使用 GPU 资源调度 Python Pandas UDF 的支持。启用后,pandas UDF 假定与 RAPIDS 加速器使用的 GPU 共享同一个 GPU,并将遵守 python GPU 配置 |
false |
运行时 |
spark.rapi ds.sql.reader. batchSizeBytes |
读取器每次批处理读取的最大字节数的软限制。读取器将读取数据块,直到达到或超过此限制。请注意,在某些情况下,读取器可能会根据每个批处理的架构和行数来估计 GPU 上将使用的字节数。 |
2147483647 |
运行时 |
spark.rap ids.sql.reader .batchSizeRows |
读取器每次批处理将读取的最大行数的软限制。orc 和 parquet 读取器将读取行组,直到达到或超过此限制。csv 读取器会遵守此限制。 |
2147483647 |
运行时 |
spa rk.rapids.sql. reader.chunked |
尽可能启用分块读取器。分块读取器允许读取原本无法读取的高度压缩数据,但代价是更多的 GPU 内存,并且在某些情况下需要更多的 GPU 计算。 |
true |
运行时 |
spa rk.rapids.sql. regexp.enabled |
指定是否将在 GPU 上评估支持的正则表达式。不支持的表达式将回退到 CPU。但是,有一些已知的边缘情况仍然会在 GPU 上执行并产生不正确的结果,这些情况已记录在兼容性指南中。将此配置设置为 false 将使所有正则表达式都在 CPU 上运行。 |
true |
运行时 |
s park.rapids.sq l.regexp.maxSt ateMemoryBytes |
指定用于正则表达式的 GPU 上的最大内存。内存使用量是基于正则表达式复杂度的上限近似值的估计值。请注意,实际内存使用量可能仍然高于此估计值,具体取决于数据列中的行数和输入字符串本身。建议不要将其设置为超过 spa rk.rapids.sql. batchSizeBytes 的 3 倍 |
2147483647 |
运行时 |
spa rk.rapids.sql. replaceSortMer geJoin.enabled |
允许用 HashJoin 替换 sortMergeJoin |
true |
运行时 |
spark.ra pids.sql.rowBa sedUDF.enabled |
设置为 true 时,通过仅在 GPU 和 CPU 之间传输查询操作内所需的数据,而不是将此操作回退到 CPU,从而优化 GPU 操作中基于行的 UDF。这是一个实验性功能,此配置将来可能会被删除。 |
false |
运行时 |
spark.rap ids.sql.shuffl e.spillThreads |
用于在后台将 shuffle 数据溢出到磁盘的线程数。 |
6 |
运行时 |
spark.r apids.sql.stab leSort.enabled |
启用或禁用稳定排序。Apache Spark 的排序通常是稳定排序,但在分布式工作负载中无法保证排序稳定性,因为上游数据到达任务的顺序无法保证。因此,排序稳定性仅在从使用单个任务/分区的文件的读取和排序数据时才重要。由于插件的限制,当您启用稳定排序时,单个任务的所有数据将在排序前合并到单个批处理中。如果数据大小太大,这目前会禁用从 GPU 内存溢出。 |
false |
运行时 |
spark.rapids .sql.suppressP lanningFailure |
如果意外情况阻止查询计划转换为启用 GPU 的计划,则可以选择将单个查询回退到 CPU。请注意,这与尚未支持的 Spark SQL 功能的正常 CPU 回退不同。如果发生这种情况,应报告该错误并作为 GitHub 问题进行调查。 |
false |
运行时 |
spark.ra pids.sql.udfCo mpiler.enabled |
设置为 true 时,Scala UDF 将被视为编译为 Catalyst 表达式 |
false |
运行时 |
spark.rapids. sql.variableFl oatAgg.enabled |
Spark 假设所有操作每次都产生完全相同的结果。对于某些浮点聚合,情况并非如此,由于聚合是并行完成的,因此在 GPU 上可能会产生略有不同的结果。如果您知道查询仅计算一次,则可以启用这些操作。 |
true |
运行时 |
spark.rapids.s ql.window.rang e.byte.enabled |
当基于范围的窗口的 order-by 列为 byte 类型,并且为值计算的范围边界发生溢出时,CPU 和 GPU 将获得不同的结果。设置为 false 时,禁用 byte 类型 order-by 列的范围窗口加速 |
false |
运行时 |
spa rk.rapids.sql. window.range.d ecimal.enabled |
设置为 false 时,这将禁用 DECIMAL 类型 order-by 列的范围窗口加速 |
true |
运行时 |
spark.rapids. sql.window.ran ge.int.enabled |
当基于范围的窗口的 order-by 列为 int 类型,并且为值计算的范围边界发生溢出时,CPU 和 GPU 将获得不同的结果。设置为 false 时,禁用 int 类型 order-by 列的范围窗口加速 |
true |
运行时 |
spark.rapids.s ql.window.rang e.long.enabled |
当基于范围的窗口的 order-by 列为 long 类型,并且为值计算的范围边界发生溢出时,CPU 和 GPU 将获得不同的结果。设置为 false 时,禁用 long 类型 order-by 列的范围窗口加速 |
true |
运行时 |
s park.rapids.sq l.window.range .short.enabled |
当基于范围的窗口的 order-by 列为 short 类型,并且为值计算的范围边界发生溢出时,CPU 和 GPU 将获得不同的结果。设置为 false 时,禁用 short 类型 order-by 列的范围窗口加速 |
false |
运行时 |
支持的 GPU 运算符和微调#
可以配置用于 Apache Spark 的 RAPIDS 加速器,以启用或禁用特定的 GPU 加速表达式。启用的表达式是 GPU 执行的候选对象。如果表达式配置为禁用,则加速器插件将不会尝试替换,并且它将在 CPU 上运行。
请利用 spark.rapids.sql.explain
设置,以从插件获得有关查询的哪些部分可能未在 GPU 上执行的原因的反馈。
注意
设置 spark.rapids.sql.incompatibleOps.enabled=true
将启用下表中由于不兼容性而默认未启用的所有设置。
表达式#
名称 |
SQL 函数 |
描述 |
默认值 |
注释 |
---|---|---|---|---|
spark.rap ids.sql.exp ression.Abs |
|
绝对值 |
true |
无 |
spark.rapi ds.sql.expr ession.Acos |
|
反余弦 |
true |
无 |
spark.rapid s.sql.expre ssion.Acosh |
|
反双曲余弦 |
true |
无 |
spark.rap ids.sql.exp ression.Add |
|
加法 |
true |
无 |
spark.rapid s.sql.expre ssion.Alias |
为列命名 |
true |
无 |
|
spark.rap ids.sql.exp ression.And |
|
逻辑与 |
true |
无 |
spa rk.rapids.s ql.expressi on.AnsiCast |
将一列数据从一种类型转换为另一种类型 |
true |
无 |
|
spark.ra pids.sql.ex pression.Ar rayContains |
|
如果数组包含传入的键,则返回布尔值 |
true |
无 |
spark. rapids.sql. expression. ArrayExcept |
|
返回 array1 中但不在 array2 中的元素数组,不包含重复项 |
true |
这与 Spark 版本并非 100% 兼容,因为 GPU 实现将 -0.0 和 0.0 视为相等,但 CPU 实现目前不这样做(请参阅 SP ARK-39845)。此外,Apache Spark 3.1.3 修复了 SPARK-36741 问题,其中这些类似集合运算符中的 NaN 未被视为相等。在这种情况下,我们选择打破与旧版本 Spark 的兼容性,并像 3.1.3+ 一样处理 NaN |
spark. rapids.sql. expression. ArrayExists |
|
如果任何元素满足谓词 Lam bdaFunction,则返回 true |
true |
无 |
spark.rap ids.sql.exp ression.Arr ayIntersect |
|
返回 array1 和 array2 交集中的元素数组,不包含重复项 |
true |
这与 Spark 版本并非 100% 兼容,因为 GPU 实现将 -0.0 和 0.0 视为相等,但 CPU 实现目前不这样做(请参阅 SP ARK-39845)。此外,Apache Spark 3.1.3 修复了 SPARK-36741 问题,其中这些类似集合运算符中的 NaN 未被视为相等。在这种情况下,我们选择打破与旧版本 Spark 的兼容性,并像 3.1.3+ 一样处理 NaN |
spa rk.rapids.s ql.expressi on.ArrayMax |
`` array_max`` |
返回数组中的最大值 |
true |
无 |
spa rk.rapids.s ql.expressi on.ArrayMin |
`` array_min`` |
返回数组中的最小值 |
true |
无 |
spark. rapids.sql. expression. ArrayRemove |
|
返回从输入数组(左)中删除所有等于输入元素(右)的元素后的数组 |
true |
无 |
spark. rapids.sql. expression. ArrayRepeat |
|
返回包含给定输入值(左)计数(右)次的数组 |
true |
无 |
spark.rap ids.sql.exp ression.Arr ayTransform |
`` transform`` |
使用 transform 函数转换数组中的元素。这类似于函数式编程中的 |
true |
无 |
spark .rapids.sql .expression .ArrayUnion |
|
返回 array1 和 array2 并集中的元素数组,不包含重复项。 |
true |
这与 Spark 版本并非 100% 兼容,因为 GPU 实现将 -0.0 和 0.0 视为相等,但 CPU 实现目前不这样做(请参阅 SP ARK-39845)。此外,Apache Spark 3.1.3 修复了 SPARK-36741 问题,其中这些类似集合运算符中的 NaN 未被视为相等。在这种情况下,我们选择打破与旧版本 Spark 的兼容性,并像 3.1.3+ 一样处理 NaN |
spark.ra pids.sql.ex pression.Ar raysOverlap |
|
如果 a1 包含至少一个也存在于 a2 中的非空元素,则返回 true。如果数组没有共同元素,并且它们都是非空的,并且其中任何一个包含空元素,则返回 null,否则返回 false。 |
true |
这与 Spark 版本并非 100% 兼容,因为 GPU 实现将 -0.0 和 0.0 视为相等,但 CPU 实现目前不这样做(请参阅 SP ARK-39845)。此外,Apache Spark 3.1.3 修复了 SPARK-36741 问题,其中这些类似集合运算符中的 NaN 未被视为相等。在这种情况下,我们选择打破与旧版本 Spark 的兼容性,并像 3.1.3+ 一样处理 NaN |
spar k.rapids.sq l.expressio n.ArraysZip |
|
返回合并的结构数组,其中第 N 个结构包含输入数组的所有第 N 个值。 |
true |
无 |
spark.rapi ds.sql.expr ession.Asin |
|
反正弦 |
true |
无 |
spark.rapid s.sql.expre ssion.Asinh |
|
反双曲正弦 |
true |
无 |
spark.rapid s.sql.expre ssion.AtLea stNNonNulls |
检查非 null/Nan 值的数量是否大于给定值 |
true |
无 |
|
spark.rapi ds.sql.expr ession.Atan |
|
反正切 |
true |
无 |
spark.rapid s.sql.expre ssion.Atanh |
|
反双曲正切 |
true |
无 |
sp ark.rapids. sql.express ion.Attribu teReference |
引用输入列 |
true |
无 |
|
s park.rapids .sql.expres sion.BRound |
|
使用 HALF_EVEN 舍入模式将表达式舍入到 d 位小数 |
true |
无 |
spar k.rapids.sq l.expressio n.BitLength |
|
字符串数据的位长度 |
true |
无 |
spark .rapids.sql .expression .BitwiseAnd |
|
返回操作数的按位与 |
true |
无 |
spark .rapids.sql .expression .BitwiseNot |
|
返回操作数的按位非 |
true |
无 |
spar k.rapids.sq l.expressio n.BitwiseOr |
|
返回操作数的按位或 |
true |
无 |
spark .rapids.sql .expression .BitwiseXor |
|
返回操作数的按位异或 |
true |
无 |
spa rk.rapids.s ql.expressi on.CaseWhen |
|
CASE WHEN 表达式 |
true |
无 |
spark.rapi ds.sql.expr ession.Cast |
|
将一列数据从一种类型转换为另一种类型 |
true |
无 |
spark.rapi ds.sql.expr ession.Cbrt |
|
立方根 |
true |
无 |
spark.rapi ds.sql.expr ession.Ceil |
` ceiling`, |
数字的上限 |
true |
无 |
spark.ra pids.sql.ex pression.Ch eckOverflow |
在 DecimalType 数据之间进行算术运算后检查溢出 |
true |
无 |
|
spa rk.rapids.s ql.expressi on.Coalesce |
` coalesce` |
返回第一个非空参数(如果存在)。否则,返回 null |
true |
无 |
s park.rapids .sql.expres sion.Concat |
|
列表/字符串连接 |
true |
无 |
spa rk.rapids.s ql.expressi on.ConcatWs |
`` concat_ws`` |
使用给定的分隔符将多个输入字符串或字符串数组连接成单个字符串 |
true |
无 |
spa rk.rapids.s ql.expressi on.Contains |
包含 |
true |
无 |
|
spark.rap ids.sql.exp ression.Cos |
|
余弦 |
true |
无 |
spark.rapi ds.sql.expr ession.Cosh |
|
双曲余弦 |
true |
无 |
spark.rap ids.sql.exp ression.Cot |
|
余切 |
true |
无 |
spark. rapids.sql. expression. CreateArray |
|
返回包含给定元素的数组 |
true |
无 |
spar k.rapids.sq l.expressio n.CreateMap |
|
创建映射 |
true |
无 |
s park.rapids .sql.expres sion.Create NamedStruct |
|
使用给定的字段名称和值创建结构体 |
true |
无 |
spark. rapids.sql. expression. CurrentRow$ |
窗口框架的特殊边界,指示在当前行停止 |
true |
无 |
|
sp ark.rapids. sql.express ion.DateAdd |
` date_add` |
返回 start_date 之后 num_days 天的日期 |
true |
无 |
spark.rapi ds.sql.expr ession.Date AddInterval |
将间隔添加到日期 |
true |
无 |
|
spa rk.rapids.s ql.expressi on.DateDiff |
` datediff` |
返回从 startDate 到 endDate 的天数 |
true |
无 |
spark.rapi ds.sql.expr ession.Date FormatClass |
|
将时间戳转换为日期格式指定的字符串值 |
true |
无 |
sp ark.rapids. sql.express ion.DateSub |
` date_sub` |
返回 start_date 之前 num_days 天的日期 |
true |
无 |
spark .rapids.sql .expression .DayOfMonth |
|
从日期或时间戳返回月份中的日期 |
true |
无 |
spar k.rapids.sq l.expressio n.DayOfWeek |
`` dayofweek`` |
返回星期几(1 = 星期日… 7 = 星期六) |
true |
无 |
spar k.rapids.sq l.expressio n.DayOfYear |
`` dayofyear`` |
从日期或时间戳返回年份中的日期 |
true |
无 |
spar k.rapids.sq l.expressio n.DenseRank |
|
窗口函数,返回聚合窗口内的密集排名值 |
true |
无 |
s park.rapids .sql.expres sion.Divide |
|
除法 |
true |
无 |
spar k.rapids.sq l.expressio n.ElementAt |
|
如果列是数组,则返回给定(从 1 开始)索引处数组的元素。如果列是映射,则返回给定键的值。 |
true |
无 |
spa rk.rapids.s ql.expressi on.EndsWith |
以...结尾 |
true |
无 |
|
spark.ra pids.sql.ex pression.Eq ualNullSafe |
|
检查值是否相等,包括 null <=> |
true |
无 |
sp ark.rapids. sql.express ion.EqualTo |
|
检查值是否相等 |
true |
无 |
spark.rap ids.sql.exp ression.Exp |
|
欧拉数 e 的幂 |
true |
无 |
sp ark.rapids. sql.express ion.Explode |
` explode`, |
给定一个输入数组,为数组中的每个值生成一系列行 |
true |
无 |
spark.rapid s.sql.expre ssion.Expm1 |
|
欧拉数 e 的幂减 1 |
true |
无 |
spark.rapid s.sql.expre ssion.Floor |
|
数字的下限 |
true |
无 |
spark.rapid s.sql.expre ssion.FromU TCTimestamp |
|
以输入时区呈现输入 UTC 时间戳 |
true |
无 |
spark.r apids.sql.e xpression.F romUnixTime |
|
从 Unix 时间戳获取字符串 |
true |
无 |
spark.r apids.sql.e xpression.G etArrayItem |
获取数组中 |
true |
无 |
|
spar k.rapids.sq l.expressio n.GetArrayS tructFields |
提取类型为结构体数组的数据的所有数组元素的第 |
true |
无 |
|
spark.ra pids.sql.ex pression.Ge tJsonObject |
|
从路径提取 JSON 对象 |
true |
无 |
spark. rapids.sql. expression. GetMapValue |
根据键从映射中获取值 |
true |
无 |
|
spark.rap ids.sql.exp ression.Get StructField |
获取结构体的命名字段 |
true |
无 |
|
spark.r apids.sql.e xpression.G etTimestamp |
使用给定的模式从字符串中获取时间戳。 |
true |
无 |
|
spark. rapids.sql. expression. GreaterThan |
|
> 运算符 |
true |
无 |
sp ark.rapids. sql.express ion.Greater ThanOrEqual |
|
>= 运算符 |
true |
无 |
spa rk.rapids.s ql.expressi on.Greatest |
` greatest` |
返回所有参数的最大值,跳过 null 值 |
true |
无 |
spark.rapi ds.sql.expr ession.Hour |
|
返回字符串/时间戳的小时组成部分 |
true |
无 |
spark.rapid s.sql.expre ssion.Hypot |
|
实数的勾股定理加法(斜边) |
true |
无 |
spark.ra pids.sql.ex pression.If |
|
IF 表达式 |
true |
无 |
spark.ra pids.sql.ex pression.In |
|
IN 运算符 |
true |
无 |
spark.rapid s.sql.expre ssion.InSet |
INSET 运算符 |
true |
无 |
|
sp ark.rapids. sql.express ion.InitCap |
|
返回 str,其中每个单词的首字母大写。所有其他字母均为小写 |
true |
这与 Spark 版本并非 100% 兼容,因为 cuDF 和 JVM 使用的 Unicode 版本可能不同,导致某些边缘情况字符无法正确更改大小写。 |
spar k.rapids.sq l.expressio n.InputFile BlockLength |
|
返回正在读取的块的长度,如果不可用,则返回 -1 |
true |
无 |
spa rk.rapids.s ql.expressi on.InputFil eBlockStart |
|
返回正在读取的块的起始偏移量,如果不可用,则返回 -1 |
true |
无 |
spark.ra pids.sql.ex pression.In putFileName |
|
返回正在读取的文件的名称,如果不可用,则返回空字符串 |
true |
无 |
spark.rap ids.sql.exp ression.Int egralDivide |
|
结果为整数的除法 |
true |
无 |
spark.rapid s.sql.expre ssion.IsNaN |
|
检查值是否为 NaN |
true |
无 |
spar k.rapids.sq l.expressio n.IsNotNull |
`` isnotnull`` |
检查值是否不为 null |
true |
无 |
s park.rapids .sql.expres sion.IsNull |
|
检查值是否为 null |
true |
无 |
spark.ra pids.sql.ex pression.Js onToStructs |
`` from_json`` |
返回具有给定 |
false |
默认情况下禁用此功能,因为从列解析 JSON 存在大量问题,目前应视为 Beta 质量。 |
spar k.rapids.sq l.expressio n.JsonTuple |
|
返回一个元组,类似于函数 get_j son_object,但它接受多个名称。所有输入参数和输出列类型均为字符串。 |
true |
无 |
s park.rapids .sql.expres sion.KnownF loatingPoin tNormalized |
防止冗余归一化的标签 |
true |
无 |
|
spark.r apids.sql.e xpression.K nownNotNull |
将表达式标记为已知不为 null |
true |
无 |
|
spark.rap ids.sql.exp ression.Lag |
|
窗口函数,返回此条目后面的 N 个条目 |
true |
无 |
spark.rap ids.sql.exp ression.Lam bdaFunction |
保存高阶 SQL 函数 |
true |
无 |
|
sp ark.rapids. sql.express ion.LastDay |
` last_day` |
返回日期所属月份的最后一天 |
true |
无 |
spark.rapi ds.sql.expr ession.Lead |
|
窗口函数,返回此条目前面的 N 个条目 |
true |
无 |
spark.rapid s.sql.expre ssion.Least |
|
返回所有参数的最小值,跳过 null 值 |
true |
无 |
s park.rapids .sql.expres sion.Length |
|
字符串字符长度或二进制字节长度 |
true |
无 |
spa rk.rapids.s ql.expressi on.LessThan |
|
< 运算符 |
true |
无 |
spark.rapi ds.sql.expr ession.Less ThanOrEqual |
|
<= 运算符 |
true |
无 |
spark.rapi ds.sql.expr ession.Like |
|
Like |
true |
无 |
sp ark.rapids. sql.express ion.Literal |
保存来自查询的静态值 |
true |
无 |
|
spark.rap ids.sql.exp ression.Log |
|
自然对数 |
true |
无 |
spark.rapid s.sql.expre ssion.Log10 |
|
以 10 为底的对数 |
true |
无 |
spark.rapid s.sql.expre ssion.Log1p |
|
自然对数 1 + expr |
true |
无 |
spark.rapi ds.sql.expr ession.Log2 |
|
以 2 为底的对数 |
true |
无 |
spar k.rapids.sq l.expressio n.Logarithm |
|
可变底对数 |
true |
无 |
spark.rapid s.sql.expre ssion.Lower |
|
字符串小写运算符 |
true |
这与 Spark 版本并非 100% 兼容,因为 cuDF 和 JVM 使用的 Unicode 版本可能不同,导致某些边缘情况字符无法正确更改大小写。 |
spark. rapids.sql. expression. MakeDecimal |
从非比例长整型值创建 Decimal,用于某些聚合操作优化 |
true |
无 |
|
spar k.rapids.sq l.expressio n.MapConcat |
|
返回所有给定映射的并集 |
true |
无 |
spark .rapids.sql .expression .MapEntries |
|
返回给定映射中所有条目的无序数组 |
true |
无 |
spar k.rapids.sq l.expressio n.MapFilter |
|
使用函数过滤映射中的条目 |
true |
无 |
sp ark.rapids. sql.express ion.MapKeys |
` map_keys` |
返回一个无序数组,其中包含映射的键 |
true |
无 |
spar k.rapids.sq l.expressio n.MapValues |
|
返回一个无序数组,其中包含映射的值 |
true |
无 |
spark.rap ids.sql.exp ression.Md5 |
|
MD5 哈希运算符 |
true |
无 |
s park.rapids .sql.expres sion.Minute |
|
返回字符串/时间戳的分钟组成部分 |
true |
无 |
spark.rap ids.sql.exp ression.Mon otonicallyI ncreasingID |
|
返回单调递增的 64 位整数 |
true |
无 |
spark.rapid s.sql.expre ssion.Month |
|
从日期或时间戳返回月份 |
true |
无 |
spa rk.rapids.s ql.expressi on.Multiply |
|
乘法 |
true |
无 |
spark. rapids.sql. expression. Murmur3Hash |
|
Murmur3 哈希运算符 |
true |
无 |
spark.rapid s.sql.expre ssion.NaNvl |
|
如果 left 不是 NaN,则评估为 |
true |
无 |
spa rk.rapids.s ql.expressi on.NamedLam bdaVariable |
高阶 SQL 函数的参数 |
true |
无 |
|
spark.rap ids.sql.exp ression.Not |
|
布尔非运算符 |
true |
无 |
spa rk.rapids.s ql.expressi on.NthValue |
`` nth_value`` |
第 n 个窗口运算符 |
true |
无 |
spark. rapids.sql. expression. OctetLength |
|
字符串数据的字节长度 |
true |
无 |
spark.ra pids.sql.ex pression.Or |
|
逻辑或 |
true |
无 |
spark. rapids.sql. expression. PercentRank |
|
窗口函数,返回聚合窗口内的百分比排名值 |
true |
无 |
spark.rapi ds.sql.expr ession.Pmod |
|
Pmod |
true |
无 |
spark .rapids.sql .expression .PosExplode |
|
给定一个输入数组,为数组中的每个值生成一系列行 |
true |
无 |
spark.rap ids.sql.exp ression.Pow |
|
lhs ^ rhs |
true |
无 |
spark.rapi ds.sql.expr ession.Prec iseTimestam pConversion |
内部使用的表达式,用于将 Ti mestampType 转换为 Long 和转换回 Ti mestampType 而不会丢失精度,即以微秒为单位。用于时间窗口 |
true |
无 |
|
spark.rapid s.sql.expre ssion.Promo tePrecision |
在 DecimalType 数据之间进行算术运算之前提升精度 |
true |
无 |
|
spar k.rapids.sq l.expressio n.PythonUDF |
在外部 Python 进程中运行的 UDF。实际上不在 GPU 上运行,但可以加速与其之间的数据传输 |
true |
无 |
|
sp ark.rapids. sql.express ion.Quarter |
|
返回日期的年份季度,范围为 1 到 4 |
true |
无 |
spark.rapid s.sql.expre ssion.RLike |
|
Like 的正则表达式版本 |
true |
无 |
spark .rapids.sql .expression .RaiseError |
|
抛出异常 |
true |
无 |
spark.rapi ds.sql.expr ession.Rand |
|
生成一个随机列,其 i.i.d. 值在 [0, 1) 中均匀分布 |
true |
无 |
spark.rapi ds.sql.expr ession.Rank |
|
窗口函数,返回聚合窗口内的排名值 |
true |
无 |
spark.ra pids.sql.ex pression.Re gExpExtract |
|
提取由正则表达式标识的特定组 |
true |
无 |
spark.rapids.sql.expression.RegExpExtractAll |
|
提取与正则表达式匹配的所有字符串,这些字符串对应于正则表达式组索引 |
true |
无 |
spark.rapids.sql.expression.RegExpReplace |
|
使用正则表达式模式进行字符串替换 |
true |
无 |
spark.rapids.sql.expression.Remainder |
|
余数或模 |
true |
无 |
spark.rapids.sql.expression.ReplicateRows |
给定一个输入行,将该行复制 N 次 |
true |
无 |
|
spark.rapids.sql.expression.Reverse |
|
返回反转的字符串或元素顺序相反的数组 |
true |
无 |
spark.rapids.sql.expression.Rint |
|
将双精度值向上舍入到最接近的等于整数的双精度值 |
true |
无 |
spark.rapids.sql.expression.Round |
|
使用 HALF_UP 舍入模式将表达式舍入到 d 位小数 |
true |
无 |
spark.rapids.sql.expression.RowNumber |
|
窗口函数,返回聚合窗口内行的索引 |
true |
无 |
spark.rapids.sql.expression.ScalaUDF |
用户自定义函数 (UDF),UDF 可以选择实现 RAPIDS 加速接口以获得更好的性能。 |
true |
无 |
|
spark.rapids.sql.expression.Second |
|
返回字符串/时间戳的秒组件 |
true |
无 |
spark.rapids.sql.expression.Sequence |
` sequence` |
序列 |
true |
无 |
spark.rapids.sql.expression.ShiftLeft |
`` shiftleft`` |
按位左移 («) |
true |
无 |
spark.rapids.sql.expression.ShiftRight |
|
按位右移 (») |
true |
无 |
spark.rapids.sql.expression.ShiftRightUnsigned |
|
按位无符号右移 (»>) |
true |
无 |
spark.rapids.sql.expression.Signum |
|
当 expr 为负数、0 或正数时,返回 -1.0、0.0 或 1.0 |
true |
无 |
spark.rapids.sql.expression.Sin |
|
正弦 |
true |
无 |
spark.rapids.sql.expression.Sinh |
|
双曲正弦 |
true |
无 |
spark.rapids.sql.expression.Size |
|
数组或 map 的大小 |
true |
无 |
spark.rapids.sql.expression.SortArray |
|
返回一个排序后的数组,其中包含输入数组和升序/降序 |
true |
无 |
spark.rapids.sql.expression.SortOrder |
排序顺序 |
true |
无 |
|
spark.rapids.sql.expression.SparkPartitionID |
|
返回当前分区 ID |
true |
无 |
spark.rapids.sql.expression.SpecifiedWindowFrame |
指定窗口函数评估时围绕的输入行组(或“帧”)的宽度 |
true |
无 |
|
spark.rapids.sql.expression.Sqrt |
|
平方根 |
true |
无 |
spark.rapids.sql.expression.StartsWith |
以...开始 |
true |
无 |
|
spark.rapids.sql.expression.StringInstr |
|
Instr 字符串运算符 |
true |
无 |
spark.rapids.sql.expression.StringLPad |
|
在字符串左侧填充 |
true |
无 |
spark.rapids.sql.expression.StringLocate |
`` position``, |
子字符串搜索运算符 |
true |
无 |
spark.rapids.sql.expression.StringRPad |
|
在字符串右侧填充 |
true |
无 |
spark.rapids.sql.expression.StringRepeat |
|
StringRepeat 运算符,使用 repeatTimes 给定的次数重复给定的字符串 |
true |
无 |
spark.rapids.sql.expression.StringReplace |
|
StringReplace 运算符 |
true |
无 |
spark.rapids.sql.expression.StringSplit |
|
在匹配 |
true |
无 |
spark.rapids.sql.expression.StringToMap |
|
将输入字符串拆分为键值对字符串后,创建一个 map |
true |
无 |
spark.rapids.sql.expression.StringTrim |
|
StringTrim 运算符 |
true |
无 |
spark.rapids.sql.expression.StringTrimLeft |
|
StringTrimLeft 运算符 |
true |
无 |
spark.rapids.sql.expression.StringTrimRight |
|
StringTrimRight 运算符 |
true |
无 |
spark.rapids.sql.expression.Substring |
|
子字符串运算符 |
true |
无 |
spark.rapids.sql.expression.SubstringIndex |
|
substring_index 运算符 |
true |
无 |
spark.rapids.sql.expression.Subtract |
|
减法 |
true |
无 |
spark.rapids.sql.expression.Tan |
|
正切 |
true |
无 |
spark.rapids.sql.expression.Tanh |
|
双曲正切 |
true |
无 |
spark.rapids.sql.expression.TimeAdd |
将间隔添加到时间戳 |
true |
无 |
|
spark.rapids.sql.expression.ToDegrees |
|
将弧度转换为度 |
true |
无 |
spark.rapids.sql.expression.ToRadians |
|
将度转换为弧度 |
true |
无 |
spark.rapids.sql.expression.ToUnixTimestamp |
|
返回给定时间的 UNIX 时间戳 |
true |
无 |
spark.rapids.sql.expression.TransformKeys |
|
使用转换函数转换 map 中的键 |
true |
无 |
spark.rapids.sql.expression.TransformValues |
|
使用转换函数转换 map 中的值 |
true |
无 |
spark.rapids.sql.expression.UnaryMinus |
` negative` |
对数值取反 |
true |
无 |
spark.rapids.sql.expression.UnaryPositive |
` positive` |
前面带 + 号的数值 |
true |
无 |
spark.rapids.sql.expression.UnboundedFollowing$ |
窗口帧的特殊边界,指示当前行之后的所有行 |
true |
无 |
|
spark.rapids.sql.expression.UnboundedPreceding$ |
窗口帧的特殊边界,指示当前行之后的所有行 |
true |
无 |
|
spark.rapids.sql.expression.UnixTimestamp |
|
返回当前或指定时间的 UNIX 时间戳 |
true |
无 |
spark.rapids.sql.expression.UnscaledValue |
将 Decimal 转换为未缩放的 long 值,以进行一些聚合优化 |
true |
无 |
|
spark.rapids.sql.expression.Upper |
|
字符串大写运算符 |
true |
这与 Spark 版本并非 100% 兼容,因为 cuDF 和 JVM 使用的 Unicode 版本可能不同,导致某些边缘情况字符无法正确更改大小写。 |
spark.rapids.sql.expression.WeekDay |
|
返回星期几 (0 = 星期一…6 = 星期日) |
true |
无 |
spark.rapids.sql.expression.WindowExpression |
基于行组(或“窗口”)计算表中每行的返回值 |
true |
无 |
|
spark.rapids.sql.expression.WindowSpecDefinition |
窗口函数的规范,指示分区表达式、行排序和窗口宽度 |
true |
无 |
|
spark.rapids.sql.expression.Year |
|
从日期或时间戳返回年份 |
true |
无 |
spark.rapids.sql.expression.AggregateExpression |
聚合表达式 |
true |
无 |
|
spark.rapids.sql.expression.ApproximatePercentile |
|
近似百分位数 |
true |
这与 Spark 版本不是 100% 兼容,因为 approx_percentile 的 GPU 实现与 Apache Spark 不是逐位兼容的。 |
spark.rapids.sql.expression.Average |
|
平均值聚合运算符 |
true |
无 |
spark.rapids.sql.expression.CollectList |
|
收集非唯一元素的列表,不支持缩减 |
true |
无 |
spark.rapids.sql.expression.CollectSet |
|
收集唯一元素的集合,不支持缩减 |
true |
无 |
spark.rapids.sql.expression.Count |
|
计数聚合运算符 |
true |
无 |
spark.rapids.sql.expression.First |
|
第一个聚合运算符 |
true |
无 |
spark.rapids.sql.expression.Last |
|
最后一个聚合运算符 |
true |
无 |
spark.rapids.sql.expression.Max |
|
最大值聚合运算符 |
true |
无 |
spark.rapids.sql.expression.Min |
|
最小值聚合运算符 |
true |
无 |
spark.rapids.sql.expression.PivotFirst |
PivotFirst 运算符 |
true |
无 |
|
spark.rapids.sql.expression.StddevPop |
|
计算总体标准差的聚合 |
true |
无 |
spark.rapids.sql.expression.StddevSamp |
|
计算样本标准差的聚合 |
true |
无 |
spark.rapids.sql.expression.Sum |
|
求和聚合运算符 |
true |
无 |
spark.rapids.sql.expression.VariancePop |
|
计算总体方差的聚合 |
true |
无 |
spark.rapids.sql.expression.VarianceSamp |
`` var_samp``, ` variance` |
计算样本方差的聚合 |
true |
无 |
spark.rapids.sql.expression.NormalizeNaNAndZero |
规范化 NaN 和零 |
true |
无 |
|
spark.rapids.sql.expression.ScalarSubquery |
子查询,将仅返回一行和一列 |
true |
无 |
|
spark.rapids.sql.expression.HiveGenericUDF |
Hive Generic UDF,UDF 可以选择实现 RAPIDS 加速接口以获得更好的性能 |
true |
无 |
|
spark.rapids.sql.expression.HiveSimpleUDF |
Hive UDF,UDF 可以选择实现 RAPIDS 加速接口以获得更好的性能 |
true |
无 |
执行#
名称 |
描述 |
默认值 |
注释 |
---|---|---|---|
spark.rapids.sql.exec.CoalesceExec |
dataframe coalesce 方法的后端 |
true |
无 |
spark.rapids.sql.exec.CollectLimitExec |
减少到单个分区并应用 limit |
false |
默认情况下禁用此功能,因为在 GPU 上 Collect Limit 替换可能会较慢。如果一个批次中包含大量行,则通过限制从 GPU 传输到 CPU 的行数,这可能会有所帮助。 |
spark.rapids.sql.exec.ExpandExec |
expand 运算符的后端 |
true |
无 |
spark.rapids.sql.exec.FileSourceScanExec |
从文件读取数据,通常来自 Hive 表 |
true |
无 |
spark.rapids.sql.exec.FilterExec |
大多数 filter 语句的后端 |
true |
无 |
spark.rapids.sql.exec.GenerateExec |
用于生成比输入行更多的输出行的操作(如 explode)的后端 |
true |
无 |
spark.rapids.sql.exec.GlobalLimitExec |
跨分区的限制结果 |
true |
无 |
spark.rapids.sql.exec.LocalLimitExec |
每个分区的限制结果 |
true |
无 |
spark.rapids.sql.exec.ProjectExec |
大多数 select、withColumn 和 dropColumn 语句的后端 |
true |
无 |
spark.rapids.sql.exec.RangeExec |
range 运算符的后端 |
true |
无 |
spark.rapids.sql.exec.SampleExec |
sample 运算符的后端 |
true |
无 |
spark.rapids.sql.exec.SortExec |
sort 运算符的后端 |
true |
无 |
spark.rapids.sql.exec.SubqueryBroadcastExec |
计划收集和转换广播键值 |
true |
无 |
spark.rapids.sql.exec.TakeOrderedAndProjectExec |
获取由 sortOrder 定义的前 limit 个元素,并在需要时进行投影 |
true |
无 |
spark.rapids.sql.exec.UnionExec |
union 运算符的后端 |
true |
无 |
spark.rapids.sql.exec.CustomShuffleReaderExec |
shuffle 查询阶段的包装器 |
true |
无 |
spark.rapids.sql.exec.HashAggregateExec |
基于哈希的聚合的后端 |
true |
无 |
spark.rapids.sql.exec.ObjectHashAggregateExec |
基于哈希的聚合的后端,支持 TypedImperativeAggregate 函数 |
true |
无 |
spark.rapids.sql.exec.SortAggregateExec |
基于排序的聚合的后端 |
true |
无 |
spark.rapids.sql.exec.InMemoryTableScanExec |
InMemoryTableScanExec 的实现,以使用 GPU 加速缓存 |
true |
无 |
spark.rapids.sql.exec.DataWritingCommandExec |
写入数据 |
true |
无 |
spark.rapids.sql.exec.ExecutedCommandExec |
立即执行的命令 |
true |
无 |
spark.rapids.sql.exec.BatchScanExec |
大多数文件输入的后端 |
true |
无 |
spark.rapids.sql.exec.BroadcastExchangeExec |
数据广播交换的后端 |
true |
无 |
spark.rapids.sql.exec.ShuffleExchangeExec |
大多数进程之间交换数据的后端 |
true |
无 |
spark.rapids.sql.exec.BroadcastHashJoinExec |
使用广播数据进行连接的实现 |
true |
无 |
spark.rapids.sql.exec.BroadcastNestedLoopJoinExec |
使用暴力方法进行连接的实现。不支持全外连接以及广播侧与连接侧匹配的连接(例如:左外连接与左广播)。 |
true |
无 |
spark.rapids.sql.exec.CartesianProductExec |
使用暴力方法进行连接的实现 |
true |
无 |
spark.rapids.sql.exec.ShuffledHashJoinExec |
使用哈希洗牌数据进行连接的实现 |
true |
无 |
spark.rapids.sql.exec.SortMergeJoinExec |
排序合并连接,替换为洗牌哈希连接 |
true |
无 |
spark.rapids.sql.exec.AggregateInPandasExec |
Aggregation Pandas UDF 的后端,它加速了 Java 进程和 Python 进程之间的数据传输。启用后,它还支持为 Python 进程调度 GPU 资源。 |
true |
无 |
spark.rapids.sql.exec.ArrowEvalPythonExec |
Scalar Pandas UDF 的后端。加速了 Java 进程和 Python 进程之间的数据传输。启用后,它还支持为 Python 进程调度 GPU 资源。 |
true |
无 |
spark.rapids.sql.exec.FlatMapCoGroupsInPandasExec |
CoGrouped Aggregation Pandas UDF 的后端。加速了 Java 进程和 Python 进程之间的数据传输。启用后,它还支持为 Python 进程调度 GPU 资源。 |
false |
默认情况下禁用此功能,因为对于许多小分组,性能并不理想。 |
spark.rapids.sql.exec.FlatMapGroupsInPandasExec |
Flat Map Groups Pandas UDF 的后端,加速了 Java 进程和 Python 进程之间的数据传输。启用后,它还支持为 Python 进程调度 GPU 资源。 |
true |
无 |
spark.rapids.sql.exec.MapInPandasExec |
Map Pandas Iterator UDF 的后端。加速了 Java 进程和 Python 进程之间的数据传输。启用后,它还支持为 Python 进程调度 GPU 资源。 |
true |
无 |
spark.rapids.sql.exec.WindowInPandasExec |
Window Aggregation Pandas UDF 的后端,加速了 Java 进程和 Python 进程之间的数据传输。启用后,它还支持为 Python 进程调度 GPU 资源。目前,它仅支持基于行的窗口帧。 |
false |
默认情况下禁用此功能,因为它目前仅支持基于行的帧。 |
spark.rapids.sql.exec.WindowExec |
Window 运算符后端 |
true |
无 |
spark.rapids.sql.exec.HiveTableScanExec |
Scan Exec 用于读取 Hive 分隔文本表 |
true |
无 |
命令#
名称 |
描述 |
默认值 |
注释 |
---|---|---|---|
spark.rapids.sql.command.SaveIntoDataSourceCommand |
写入数据源 |
true |
无 |
扫描#
名称 |
描述 |
默认值 |
注释 |
---|---|---|---|
spark.rapids.sql.input.CSVScan |
CSV 解析 |
true |
无 |
spark.rapids.sql.input.JsonScan |
Json 解析 |
true |
无 |
spark.rapids.sql.input.OrcScan |
ORC 解析 |
true |
无 |
spark.rapids.sql.input.ParquetScan |
Parquet 解析 |
true |
无 |
spark.rapids.sql.input.AvroScan |
Avro 解析 |
true |
无 |
分区#
名称 |
描述 |
默认值 |
注释 |
---|---|---|---|
spark.rapids.sql.partitioning.HashPartitioning |
基于哈希的分区 |
true |
无 |
spark.rapids.sql.partitioning.RangePartitioning |
范围分区 |
true |
无 |
spark.rapids.sql.partitioning.RoundRobinPartitioning |
轮询分区 |
true |
无 |
spark.rapids.sql.partitioning.SinglePartition$ |
单一分区 |
true |
无 |