Skip to content

Commit 593ee5d

Browse files
author
Sameer Raheja
committed
Merge branch 'main' of https://github.com/nvidia/cudf-spark into cudf-spark-rename-1
2 parents 207c83a + f5f5ccb commit 593ee5d

240 files changed

Lines changed: 1903 additions & 47 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

datagen/src/main/spark330/scala/org/apache/spark/sql/tests/datagen/DataGenExprShims.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
{"spark": "356"}
3838
{"spark": "357"}
3939
{"spark": "358"}
40+
{"spark": "359"}
4041
spark-rapids-shim-json-lines ***/
4142
package org.apache.spark.sql.tests.datagen
4243

docs/additional-functionality/advanced_configs.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ Name | Description | Default Value | Applicable at
5656
<a name="python.memory.gpu.allocFraction"></a>spark.rapids.python.memory.gpu.allocFraction|The 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 specified|None|Runtime
5757
<a name="python.memory.gpu.maxAllocFraction"></a>spark.rapids.python.memory.gpu.maxAllocFraction|The 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.0|Runtime
5858
<a name="python.memory.gpu.pooling.enabled"></a>spark.rapids.python.memory.gpu.pooling.enabled|Should 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'.|None|Runtime
59-
<a name="shuffle.enabled"></a>spark.rapids.shuffle.enabled|Enable or disable the RAPIDS Shuffle Manager at runtime. The [RAPIDS Shuffle Manager](https://docs.nvidia.com/spark-rapids/user-guide/latest/additional-functionality/rapids-shuffle.html) must already be configured. When set to `false`, the built-in Spark shuffle will be used. |true|Runtime
59+
<a name="shuffle.enabled"></a>spark.rapids.shuffle.enabled|Enable or disable the RAPIDS Shuffle Manager implementation at runtime. On supported Spark versions, including Spark 4.0.0 and later, the [RAPIDS Shuffle Manager](https://docs.nvidia.com/spark-rapids/user-guide/latest/additional-functionality/rapids-shuffle.html) is configured automatically unless spark.shuffle.manager is explicitly set. On earlier Spark versions, the RAPIDS Shuffle Manager must already be configured. When set to `false`, the built-in Spark shuffle implementation will be used. |true|Runtime
6060
<a name="shuffle.mode"></a>spark.rapids.shuffle.mode|RAPIDS 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).|MULTITHREADED|Startup
6161
<a name="shuffle.multiThreaded.maxBytesInFlight"></a>spark.rapids.shuffle.multiThreaded.maxBytesInFlight|The 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/cudf-spark/issues/9153.|134217728|Startup
6262
<a name="shuffle.multiThreaded.reader.threads"></a>spark.rapids.shuffle.multiThreaded.reader.threads|The 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.|20|Startup

docs/download.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,11 +46,11 @@ The plugin is designed to work on NVIDIA Volta, Turing, Ampere, Ada Lovelace, Ho
4646
Supported Spark versions:
4747
Apache Spark 3.3.0, 3.3.1, 3.3.2, 3.3.3, 3.3.4
4848
Apache Spark 3.4.0, 3.4.1, 3.4.2, 3.4.3, 3.4.4
49-
Apache Spark 3.5.0, 3.5.1, 3.5.2, 3.5.3, 3.5.4, 3.5.5, 3.5.6, 3.5.7, 3.5.8
49+
Apache Spark 3.5.0, 3.5.1, 3.5.2, 3.5.3, 3.5.4, 3.5.5, 3.5.6, 3.5.7, 3.5.8, 3.5.9
5050
Apache Spark 4.0.0, 4.0.1, 4.0.2, 4.0.3, 4.0.4
5151
Apache Spark 4.1.1
52-
Scala 2.12: Spark 3.3.0 through 3.5.8
53-
Scala 2.13: Spark 3.5.0 through 3.5.8, and Spark 4.0.0, 4.0.1, 4.0.2, 4.0.3, 4.0.4, and 4.1.1
52+
Scala 2.12: Spark 3.3.0 through 3.5.9
53+
Scala 2.13: Spark 3.5.0 through 3.5.9, and Spark 4.0.0, 4.0.1, 4.0.2, 4.0.3, 4.0.4, and 4.1.1
5454

5555
Supported Databricks runtime versions for Azure and AWS:
5656
Databricks 14.3 ML LTS (GPU, Scala 2.12, Spark 3.5.0)

iceberg/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ and the directory that contains the corresponding support code.
1212
| Iceberg Version | Spark Version | Directory |
1313
|-----------------|----------------------------|-------------------|
1414
| 1.6.x | Spark 3.5.0-3.5.3 | `iceberg-1-6-x` |
15-
| 1.9.x | Spark 3.5.4-3.5.8 | `iceberg-1-9-x` |
16-
| 1.10.x | Spark 3.5.4-3.5.8, 4.0.x | `iceberg-1-10-x` |
15+
| 1.9.x | Spark 3.5.4-3.5.9 | `iceberg-1-9-x` |
16+
| 1.10.x | Spark 3.5.4-3.5.9, 4.0.x | `iceberg-1-10-x` |
1717
| 1.11.x | Spark 4.0.2+, 4.1.x | `iceberg-1-11-x` |
1818

1919
Iceberg GPU acceleration is currently supported on Spark 3.5.x, 4.0.x, and 4.1.x.

iceberg/iceberg-1-10-x/src/main/spark354/java/com/nvidia/spark/rapids/iceberg/GpuInternalRow.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
{"spark": "356"}
2020
{"spark": "357"}
2121
{"spark": "358"}
22+
{"spark": "359"}
2223
spark-rapids-shim-json-lines ***/
2324

2425
package com.nvidia.spark.rapids.iceberg;

integration_tests/src/main/python/ast_test.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@
1717
from asserts import assert_cpu_and_gpu_are_equal_collect_with_capture, assert_gpu_and_cpu_are_equal_collect
1818
from data_gen import *
1919
from marks import approximate_float, datagen_overrides, ignore_order, disable_ansi_mode
20-
from spark_session import with_cpu_session, is_spark_403_or_404, is_spark_412_or_later, \
21-
is_spark_420_or_later
20+
from spark_session import with_cpu_session, is_spark_359, is_spark_403_or_404, \
21+
is_spark_412_or_later, is_spark_420_or_later
2222
import pyspark.sql.functions as f
2323

2424
# Each descriptor contains a list of data generators and a corresponding boolean
@@ -61,9 +61,11 @@
6161

6262
ast_boolean_descr = [(boolean_gen, True)]
6363
ast_double_descr = [(double_gen, True)]
64-
# AST is not expressive enough to support the ACOSH Spark emulation expression in Spark 4.0.3,
65-
# Spark 4.0.4, and Spark 4.1.2+.
66-
ast_acosh_descr = [(double_gen, not (is_spark_403_or_404() or is_spark_412_or_later()))]
64+
# AST is not expressive enough to support the ACOSH Spark emulation expression in Spark 3.5.9,
65+
# Spark 4.0.3, Spark 4.0.4, and Spark 4.1.2+.
66+
ast_acosh_descr = [(
67+
double_gen,
68+
not (is_spark_359() or is_spark_403_or_404() or is_spark_412_or_later()))]
6769

6870
_project_ast_enabled_conf = {"spark.rapids.sql.projectAstEnabled": "true"}
6971

integration_tests/src/main/python/delta_lake_auto_compact_test.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
from asserts import assert_gpu_and_cpu_writes_are_equal_collect, with_gpu_session
1717
from data_gen import copy_and_update, idfn
1818
from delta_lake_utils import *
19-
from marks import allow_non_gpu, delta_lake
19+
from marks import allow_non_gpu, delta_lake, ignore_order
2020
from pyspark.sql.functions import *
2121
from spark_session import is_spark_353_or_later, is_databricks_runtime, \
2222
is_databricks104_or_later, is_databricks173_or_later, supports_delta_lake_deletion_vectors
@@ -111,6 +111,8 @@ def test_auto_compact_dbr173_inline_uses_gpu(spark_tmp_path):
111111
with_cpu_session(lambda spark: assert_optimized(spark, data_path), {})
112112

113113

114+
# Auto-configured RapidsShuffleManager may change row ordering.
115+
@ignore_order(local=True)
114116
@delta_lake
115117
@allow_non_gpu(*delta_meta_allow)
116118
@pytest.mark.skipif(not is_databricks_runtime() and not is_spark_353_or_later(),

integration_tests/src/main/python/spark_session.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -243,6 +243,9 @@ def is_spark_351_or_later():
243243
def is_spark_356_or_later():
244244
return spark_version() >= "3.5.6"
245245

246+
def is_spark_359():
247+
return spark_version() == "3.5.9"
248+
246249
def is_spark_35x():
247250
return "3.5.0" <= spark_version() < "3.6.0"
248251

integration_tests/src/test/spark330/scala/org/apache/spark/sql/rapids/shims/TrampolineUtilShim.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
{"spark": "356"}
3939
{"spark": "357"}
4040
{"spark": "358"}
41+
{"spark": "359"}
4142
spark-rapids-shim-json-lines ***/
4243
package org.apache.spark.sql.rapids.shims
4344

pom.xml

Lines changed: 31 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -557,6 +557,32 @@
557557
<module>iceberg/iceberg-1-10-x</module>
558558
</modules>
559559
</profile>
560+
<profile>
561+
<id>release359</id>
562+
<activation>
563+
<property>
564+
<name>buildver</name>
565+
<value>359</value>
566+
</property>
567+
</activation>
568+
<properties>
569+
<buildver>359</buildver>
570+
<spark.version>${spark359.version}</spark.version>
571+
<spark.test.version>${spark359.version}</spark.test.version>
572+
<parquet.hadoop.version>1.13.1</parquet.hadoop.version>
573+
<rapids.delta.artifactId1>rapids-4-spark-delta-33x</rapids.delta.artifactId1>
574+
<iceberg.artifact.suffix>${spark35x.iceberg.artifact.suffix}</iceberg.artifact.suffix>
575+
<iceberg.version>${iceberg.19x.version}</iceberg.version>
576+
<rapids.iceberg.artifactId>rapids-4-spark-iceberg-1-9-x</rapids.iceberg.artifactId>
577+
<rapids.iceberg.artifactId2>rapids-4-spark-iceberg-1-10-x</rapids.iceberg.artifactId2>
578+
<slf4j.version>2.0.7</slf4j.version>
579+
</properties>
580+
<modules>
581+
<module>delta-lake/delta-33x</module>
582+
<module>iceberg/iceberg-1-9-x</module>
583+
<module>iceberg/iceberg-1-10-x</module>
584+
</modules>
585+
</profile>
560586
<!-- #if scala-2.13 --><!--
561587
<profile>
562588
<id>release400</id>
@@ -1032,6 +1058,7 @@
10321058
<spark356.version>3.5.6</spark356.version>
10331059
<spark357.version>3.5.7</spark357.version>
10341060
<spark358.version>3.5.8</spark358.version>
1061+
<spark359.version>3.5.9</spark359.version>
10351062
<spark400.version>4.0.0</spark400.version>
10361063
<spark400db173.version>4.0.0-databricks-173</spark400db173.version>
10371064
<spark401.version>4.0.1</spark401.version>
@@ -1757,15 +1784,15 @@ This will force full Scala code rebuild in downstream modules.
17571784
<!-- #if scala-2.12 -->
17581785
<requireProperty>
17591786
<property>buildver</property>
1760-
<regex>^(33[0-4]|34[0-4]|35[0-8]|350db143)$</regex>
1761-
<regexMessage>Unsupported buildver value ${buildver} for a Scala 2.12 build. Supported Scala 2.12 buildver values are: 330, 331, 332, 333, 334, 340, 341, 342, 343, 344, 350, 351, 352, 353, 354, 355, 356, 357, 358, 350db143. For Scala 2.13/Spark 4.x builds, use -f scala2.13/pom.xml with a supported Scala 2.13 buildver such as 350, 400, 403, 404, 412, 413, or 420.</regexMessage>
1787+
<regex>^(33[0-4]|34[0-4]|35[0-9]|350db143)$</regex>
1788+
<regexMessage>Unsupported buildver value ${buildver} for a Scala 2.12 build. Supported Scala 2.12 buildver values are: 330, 331, 332, 333, 334, 340, 341, 342, 343, 344, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 350db143. For Scala 2.13/Spark 4.x builds, use -f scala2.13/pom.xml with a supported Scala 2.13 buildver such as 350, 400, 403, 404, 412, 413, or 420.</regexMessage>
17621789
</requireProperty>
17631790
<!-- #endif scala-2.12 -->
17641791
<!-- #if scala-2.13 --><!--
17651792
<requireProperty>
17661793
<property>buildver</property>
1767-
<regex>^(35[0-8]|40[0-4]|41[1-3]|420|400db173)$</regex>
1768-
<regexMessage>Unsupported buildver value ${buildver} for a Scala 2.13 build. Supported Scala 2.13 buildver values are: 350, 351, 352, 353, 354, 355, 356, 357, 358, 400, 401, 402, 403, 404, 411, 412, 413, 420, 400db173. Spark 3.3.x and 3.4.x builds use Scala 2.12; for example, build Spark 330 with the root pom.xml instead of scala2.13/pom.xml.</regexMessage>
1794+
<regex>^(35[0-9]|40[0-4]|41[1-3]|420|400db173)$</regex>
1795+
<regexMessage>Unsupported buildver value ${buildver} for a Scala 2.13 build. Supported Scala 2.13 buildver values are: 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 400, 401, 402, 403, 404, 411, 412, 413, 420, 400db173. Spark 3.3.x and 3.4.x builds use Scala 2.12; for example, build Spark 330 with the root pom.xml instead of scala2.13/pom.xml.</regexMessage>
17691796
</requireProperty>
17701797
--><!-- #endif scala-2.13 -->
17711798
<requireProperty>

0 commit comments

Comments
 (0)