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,并且目录 spa rk.local.dir 必须支持 GDS。这是一项实验性功能。有关 GDS 的更多信息,请参阅 h ttps://docs.nv idia.com/gpudi rect-storage/。

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 管理器 必须已配置。当设置为 false 时,将使用内置 Spark 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 类型使用 write.pa rquet.row-grou p-size-bytes 配置,对 Orc 类型使用 orc .stripe.size 配置。如果该值大于 0,则将使用此正值。最大值可能会获得更好的性能,但并非总是如此,因为并发写入器使用可溢出缓存,并且大值可能会导致更多的 IO 交换。

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 (这意味着字符串结果将与 CPU 的结果不同)。如果显式设置为 false 并且作业中存在从 float/double 到字符串的转换,则此行为将导致异常,并且作业将失败。

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 已设置,则将尝试赋值为 max(MULTIT HREAD_READ_NUM _THREADS_DEFAU LT, spark.exec utor.cores),其中 MULTITHR EAD_READ_NUM_T HREADS_DEFAULT = 20。

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

abs

绝对值

true

spark.rapi ds.sql.expr ession.Acos

acos

反余弦

true

spark.rapid s.sql.expre ssion.Acosh

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

and

逻辑与

true

spa rk.rapids.s ql.expressi on.AnsiCast

将一列数据从一种类型转换为另一种类型

true

spark.ra pids.sql.ex pression.Ar rayContains

array _contains

如果数组包含传入的键,则返回布尔值

true

spark. rapids.sql. expression. ArrayExcept

arr ay_except

返回 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

exists

如果任何元素满足谓词 Lam bdaFunction,则返回 true

true

spark.rap ids.sql.exp ression.Arr ayIntersect

array_ intersect

返回 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

arr ay_remove

返回从输入数组(左)中删除所有等于输入元素(右)的元素后的数组

true

spark. rapids.sql. expression. ArrayRepeat

arr ay_repeat

返回包含给定输入值(左)计数(右)次的数组

true

spark.rap ids.sql.exp ression.Arr ayTransform

`` transform``

使用 transform 函数转换数组中的元素。这类似于函数式编程中的 map

true

spark .rapids.sql .expression .ArrayUnion

ar ray_union

返回 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

array s_overlap

如果 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

a rrays_zip

返回合并的结构数组,其中第 N 个结构包含输入数组的所有第 N 个值。

true

spark.rapi ds.sql.expr ession.Asin

asin

反正弦

true

spark.rapid s.sql.expre ssion.Asinh

asinh

反双曲正弦

true

spark.rapid s.sql.expre ssion.AtLea stNNonNulls

检查非 null/Nan 值的数量是否大于给定值

true

spark.rapi ds.sql.expr ession.Atan

atan

反正切

true

spark.rapid s.sql.expre ssion.Atanh

atanh

反双曲正切

true

sp ark.rapids. sql.express ion.Attribu teReference

引用输入列

true

s park.rapids .sql.expres sion.BRound

bround

使用 HALF_EVEN 舍入模式将表达式舍入到 d 位小数

true

spar k.rapids.sq l.expressio n.BitLength

b it_length

字符串数据的位长度

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

when

CASE WHEN 表达式

true

spark.rapi ds.sql.expr ession.Cast

t imestamp, ` tinyint`, binary, float, `` smallint``, string, ` decimal`, double, ` boolean`, cast, date, int, bigint

将一列数据从一种类型转换为另一种类型

true

spark.rapi ds.sql.expr ession.Cbrt

cbrt

立方根

true

spark.rapi ds.sql.expr ession.Ceil

` ceiling`, ceil

数字的上限

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

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

cos

余弦

true

spark.rapi ds.sql.expr ession.Cosh

cosh

双曲余弦

true

spark.rap ids.sql.exp ression.Cot

cot

余切

true

spark. rapids.sql. expression. CreateArray

array

返回包含给定元素的数组

true

spar k.rapids.sq l.expressio n.CreateMap

map

创建映射

true

s park.rapids .sql.expres sion.Create NamedStruct

name d_struct, struct

使用给定的字段名称和值创建结构体

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

da te_format

将时间戳转换为日期格式指定的字符串值

true

sp ark.rapids. sql.express ion.DateSub

` date_sub`

返回 start_date 之前 num_days 天的日期

true

spark .rapids.sql .expression .DayOfMonth

da yofmonth, day

从日期或时间戳返回月份中的日期

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

d ense_rank

窗口函数,返回聚合窗口内的密集排名值

true

s park.rapids .sql.expres sion.Divide

/

除法

true

spar k.rapids.sq l.expressio n.ElementAt

e lement_at

如果列是数组,则返回给定(从 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

exp

欧拉数 e 的幂

true

sp ark.rapids. sql.express ion.Explode

` explode`, expl ode_outer

给定一个输入数组,为数组中的每个值生成一系列行

true

spark.rapid s.sql.expre ssion.Expm1

expm1

欧拉数 e 的幂减 1

true

spark.rapid s.sql.expre ssion.Floor

floor

数字的下限

true

spark.rapid s.sql.expre ssion.FromU TCTimestamp

from_utc_ timestamp

以输入时区呈现输入 UTC 时间戳

true

spark.r apids.sql.e xpression.F romUnixTime

from _unixtime

从 Unix 时间戳获取字符串

true

spark.r apids.sql.e xpression.G etArrayItem

获取数组中 ordinal 处的字段

true

spar k.rapids.sq l.expressio n.GetArrayS tructFields

提取类型为结构体数组的数据的所有数组元素的第 o rdinal 个字段

true

spark.ra pids.sql.ex pression.Ge tJsonObject

get_js on_object

从路径提取 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

hour

返回字符串/时间戳的小时组成部分

true

spark.rapid s.sql.expre ssion.Hypot

hypot

实数的勾股定理加法(斜边)

true

spark.ra pids.sql.ex pression.If

if

IF 表达式

true

spark.ra pids.sql.ex pression.In

in

IN 运算符

true

spark.rapid s.sql.expre ssion.InSet

INSET 运算符

true

sp ark.rapids. sql.express ion.InitCap

initcap

返回 str,其中每个单词的首字母大写。所有其他字母均为小写

true

这与 Spark 版本并非 100% 兼容,因为 cuDF 和 JVM 使用的 Unicode 版本可能不同,导致某些边缘情况字符无法正确更改大小写。

spar k.rapids.sq l.expressio n.InputFile BlockLength

inp ut_file_blo ck_length

返回正在读取的块的长度,如果不可用,则返回 -1

true

spa rk.rapids.s ql.expressi on.InputFil eBlockStart

in put_file_bl ock_start

返回正在读取的块的起始偏移量,如果不可用,则返回 -1

true

spark.ra pids.sql.ex pression.In putFileName

input_ file_name

返回正在读取的文件的名称,如果不可用,则返回空字符串

true

spark.rap ids.sql.exp ression.Int egralDivide

div

结果为整数的除法

true

spark.rapid s.sql.expre ssion.IsNaN

isnan

检查值是否为 NaN

true

spar k.rapids.sq l.expressio n.IsNotNull

`` isnotnull``

检查值是否不为 null

true

s park.rapids .sql.expres sion.IsNull

isnull

检查值是否为 null

true

spark.ra pids.sql.ex pression.Js onToStructs

`` from_json``

返回具有给定 jsonStrschema 的结构体值

false

默认情况下禁用此功能,因为从列解析 JSON 存在大量问题,目前应视为 Beta 质量。

spar k.rapids.sq l.expressio n.JsonTuple

j son_tuple

返回一个元组,类似于函数 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

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

lead

窗口函数,返回此条目前面的 N 个条目

true

spark.rapid s.sql.expre ssion.Least

least

返回所有参数的最小值,跳过 null 值

true

s park.rapids .sql.expres sion.Length

length, characte r_length, ch ar_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

Like

true

sp ark.rapids. sql.express ion.Literal

保存来自查询的静态值

true

spark.rap ids.sql.exp ression.Log

ln

自然对数

true

spark.rapid s.sql.expre ssion.Log10

log10

以 10 为底的对数

true

spark.rapid s.sql.expre ssion.Log1p

log1p

自然对数 1 + expr

true

spark.rapi ds.sql.expr ession.Log2

log2

以 2 为底的对数

true

spar k.rapids.sq l.expressio n.Logarithm

log

可变底对数

true

spark.rapid s.sql.expre ssion.Lower

lower, lcase

字符串小写运算符

true

这与 Spark 版本并非 100% 兼容,因为 cuDF 和 JVM 使用的 Unicode 版本可能不同,导致某些边缘情况字符无法正确更改大小写。

spark. rapids.sql. expression. MakeDecimal

从非比例长整型值创建 Decimal,用于某些聚合操作优化

true

spar k.rapids.sq l.expressio n.MapConcat

m ap_concat

返回所有给定映射的并集

true

spark .rapids.sql .expression .MapEntries

ma p_entries

返回给定映射中所有条目的无序数组

true

spar k.rapids.sq l.expressio n.MapFilter

m ap_filter

使用函数过滤映射中的条目

true

sp ark.rapids. sql.express ion.MapKeys

` map_keys`

返回一个无序数组,其中包含映射的键

true

spar k.rapids.sq l.expressio n.MapValues

m ap_values

返回一个无序数组,其中包含映射的值

true

spark.rap ids.sql.exp ression.Md5

md5

MD5 哈希运算符

true

s park.rapids .sql.expres sion.Minute

minute

返回字符串/时间戳的分钟组成部分

true

spark.rap ids.sql.exp ression.Mon otonicallyI ncreasingID

monoton ically_incr easing_id

返回单调递增的 64 位整数

true

spark.rapid s.sql.expre ssion.Month

month

从日期或时间戳返回月份

true

spa rk.rapids.s ql.expressi on.Multiply

*

乘法

true

spark. rapids.sql. expression. Murmur3Hash

hash

Murmur3 哈希运算符

true

spark.rapid s.sql.expre ssion.NaNvl

nanvl

如果 left 不是 NaN,则评估为 left,否则评估为 right

true

spa rk.rapids.s ql.expressi on.NamedLam bdaVariable

高阶 SQL 函数的参数

true

spark.rap ids.sql.exp ression.Not

!, not

布尔非运算符

true

spa rk.rapids.s ql.expressi on.NthValue

`` nth_value``

第 n 个窗口运算符

true

spark. rapids.sql. expression. OctetLength

oct et_length

字符串数据的字节长度

true

spark.ra pids.sql.ex pression.Or

or

逻辑或

true

spark. rapids.sql. expression. PercentRank

per cent_rank

窗口函数,返回聚合窗口内的百分比排名值

true

spark.rapi ds.sql.expr ession.Pmod

pmod

Pmod

true

spark .rapids.sql .expression .PosExplode

posexplo de_outer, p osexplode

给定一个输入数组,为数组中的每个值生成一系列行

true

spark.rap ids.sql.exp ression.Pow

pow, power

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

quarter

返回日期的年份季度,范围为 1 到 4

true

spark.rapid s.sql.expre ssion.RLike

rlike

Like 的正则表达式版本

true

spark .rapids.sql .expression .RaiseError

ra ise_error

抛出异常

true

spark.rapi ds.sql.expr ession.Rand

random, rand

生成一个随机列,其 i.i.d. 值在 [0, 1) 中均匀分布

true

spark.rapi ds.sql.expr ession.Rank

rank

窗口函数,返回聚合窗口内的排名值

true

spark.ra pids.sql.ex pression.Re gExpExtract

regex p_extract

提取由正则表达式标识的特定组

true

spark.rapids.sql.expression.RegExpExtractAll

regexp_ex tract_all

提取与正则表达式匹配的所有字符串,这些字符串对应于正则表达式组索引

true

spark.rapids.sql.expression.RegExpReplace

regex p_replace

使用正则表达式模式进行字符串替换

true

spark.rapids.sql.expression.Remainder

%, mod

余数或模

true

spark.rapids.sql.expression.ReplicateRows

给定一个输入行,将该行复制 N 次

true

spark.rapids.sql.expression.Reverse

reverse

返回反转的字符串或元素顺序相反的数组

true

spark.rapids.sql.expression.Rint

rint

将双精度值向上舍入到最接近的等于整数的双精度值

true

spark.rapids.sql.expression.Round

round

使用 HALF_UP 舍入模式将表达式舍入到 d 位小数

true

spark.rapids.sql.expression.RowNumber

r ow_number

窗口函数,返回聚合窗口内行的索引

true

spark.rapids.sql.expression.ScalaUDF

用户自定义函数 (UDF),UDF 可以选择实现 RAPIDS 加速接口以获得更好的性能。

true

spark.rapids.sql.expression.Second

second

返回字符串/时间戳的秒组件

true

spark.rapids.sql.expression.Sequence

` sequence`

序列

true

spark.rapids.sql.expression.ShiftLeft

`` shiftleft``

按位左移 («)

true

spark.rapids.sql.expression.ShiftRight

s hiftright

按位右移 (»)

true

spark.rapids.sql.expression.ShiftRightUnsigned

shiftrigh tunsigned

按位无符号右移 (»>)

true

spark.rapids.sql.expression.Signum

sign, signum

当 expr 为负数、0 或正数时,返回 -1.0、0.0 或 1.0

true

spark.rapids.sql.expression.Sin

sin

正弦

true

spark.rapids.sql.expression.Sinh

sinh

双曲正弦

true

spark.rapids.sql.expression.Size

size, ca rdinality

数组或 map 的大小

true

spark.rapids.sql.expression.SortArray

s ort_array

返回一个排序后的数组,其中包含输入数组和升序/降序

true

spark.rapids.sql.expression.SortOrder

排序顺序

true

spark.rapids.sql.expression.SparkPartitionID

spark_par tition_id

返回当前分区 ID

true

spark.rapids.sql.expression.SpecifiedWindowFrame

指定窗口函数评估时围绕的输入行组(或“帧”)的宽度

true

spark.rapids.sql.expression.Sqrt

sqrt

平方根

true

spark.rapids.sql.expression.StartsWith

以...开始

true

spark.rapids.sql.expression.StringInstr

instr

Instr 字符串运算符

true

spark.rapids.sql.expression.StringLPad

lpad

在字符串左侧填充

true

spark.rapids.sql.expression.StringLocate

`` position``, locate

子字符串搜索运算符

true

spark.rapids.sql.expression.StringRPad

rpad

在字符串右侧填充

true

spark.rapids.sql.expression.StringRepeat

repeat

StringRepeat 运算符,使用 repeatTimes 给定的次数重复给定的字符串

true

spark.rapids.sql.expression.StringReplace

replace

StringReplace 运算符

true

spark.rapids.sql.expression.StringSplit

split

在匹配 regex 的出现位置周围拆分 str

true

spark.rapids.sql.expression.StringToMap

s tr_to_map

将输入字符串拆分为键值对字符串后,创建一个 map

true

spark.rapids.sql.expression.StringTrim

trim

StringTrim 运算符

true

spark.rapids.sql.expression.StringTrimLeft

ltrim

StringTrimLeft 运算符

true

spark.rapids.sql.expression.StringTrimRight

rtrim

StringTrimRight 运算符

true

spark.rapids.sql.expression.Substring

substr, `` substring``

子字符串运算符

true

spark.rapids.sql.expression.SubstringIndex

substr ing_index

substring_index 运算符

true

spark.rapids.sql.expression.Subtract

-

减法

true

spark.rapids.sql.expression.Tan

tan

正切

true

spark.rapids.sql.expression.Tanh

tanh

双曲正切

true

spark.rapids.sql.expression.TimeAdd

将间隔添加到时间戳

true

spark.rapids.sql.expression.ToDegrees

degrees

将弧度转换为度

true

spark.rapids.sql.expression.ToRadians

radians

将度转换为弧度

true

spark.rapids.sql.expression.ToUnixTimestamp

to_unix_ timestamp

返回给定时间的 UNIX 时间戳

true

spark.rapids.sql.expression.TransformKeys

trans form_keys

使用转换函数转换 map 中的键

true

spark.rapids.sql.expression.TransformValues

transfo rm_values

使用转换函数转换 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_ timestamp

返回当前或指定时间的 UNIX 时间戳

true

spark.rapids.sql.expression.UnscaledValue

将 Decimal 转换为未缩放的 long 值,以进行一些聚合优化

true

spark.rapids.sql.expression.Upper

upper, ucase

字符串大写运算符

true

这与 Spark 版本并非 100% 兼容,因为 cuDF 和 JVM 使用的 Unicode 版本可能不同,导致某些边缘情况字符无法正确更改大小写。

spark.rapids.sql.expression.WeekDay

weekday

返回星期几 (0 = 星期一…6 = 星期日)

true

spark.rapids.sql.expression.WindowExpression

基于行组(或“窗口”)计算表中每行的返回值

true

spark.rapids.sql.expression.WindowSpecDefinition

窗口函数的规范,指示分区表达式、行排序和窗口宽度

true

spark.rapids.sql.expression.Year

year

从日期或时间戳返回年份

true

spark.rapids.sql.expression.AggregateExpression

聚合表达式

true

spark.rapids.sql.expression.ApproximatePercentile

percentil e_approx, approx_p ercentile

近似百分位数

true

这与 Spark 版本不是 100% 兼容,因为 approx_percentile 的 GPU 实现与 Apache Spark 不是逐位兼容的。

spark.rapids.sql.expression.Average

avg, mean

平均值聚合运算符

true

spark.rapids.sql.expression.CollectList

col lect_list

收集非唯一元素的列表,不支持缩减

true

spark.rapids.sql.expression.CollectSet

co llect_set

收集唯一元素的集合,不支持缩减

true

spark.rapids.sql.expression.Count

count

计数聚合运算符

true

spark.rapids.sql.expression.First

fir st_value, first

第一个聚合运算符

true

spark.rapids.sql.expression.Last

last, l ast_value

最后一个聚合运算符

true

spark.rapids.sql.expression.Max

max

最大值聚合运算符

true

spark.rapids.sql.expression.Min

min

最小值聚合运算符

true

spark.rapids.sql.expression.PivotFirst

PivotFirst 运算符

true

spark.rapids.sql.expression.StddevPop

s tddev_pop

计算总体标准差的聚合

true

spark.rapids.sql.expression.StddevSamp

std dev_samp, std, stddev

计算样本标准差的聚合

true

spark.rapids.sql.expression.Sum

sum

求和聚合运算符

true

spark.rapids.sql.expression.VariancePop

var_pop

计算总体方差的聚合

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