Skip to content

Commit a32ec69

Browse files
authored
Merge pull request #4769 from NVIDIA/branch-22.02
Merge remote-tracking branch 'origin/branch-22.02' into main [skip ci]
2 parents e56343b + a707759 commit a32ec69

20 files changed

+65
-83
lines changed

CHANGELOG.md

+8-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# Change log
2-
Generated on 2022-02-07
2+
Generated on 2022-02-14
33

44
## Release 22.02
55

@@ -117,6 +117,13 @@ Generated on 2022-02-07
117117
### PRs
118118
|||
119119
|:---|:---|
120+
|[#4771](https://github.com/NVIDIA/spark-rapids/pull/4771)|revert cudf api links from legacy to stable[skip ci]|
121+
|[#4767](https://github.com/NVIDIA/spark-rapids/pull/4767)|Update 22.02 changelog to latest [skip ci]|
122+
|[#4750](https://github.com/NVIDIA/spark-rapids/pull/4750)|Updated doc for decimal support|
123+
|[#4757](https://github.com/NVIDIA/spark-rapids/pull/4757)|Update qualification tool to remove DECIMAL 128 as potential problem|
124+
|[#4755](https://github.com/NVIDIA/spark-rapids/pull/4755)|Fix databricks doc for limitations.[skip ci]|
125+
|[#4751](https://github.com/NVIDIA/spark-rapids/pull/4751)|Fix broken hyperlinks in documentation [skip ci]|
126+
|[#4706](https://github.com/NVIDIA/spark-rapids/pull/4706)|Update 22.02 changelog to latest [skip ci]|
120127
|[#4700](https://github.com/NVIDIA/spark-rapids/pull/4700)|Update cudfjni version to released 22.02.0|
121128
|[#4701](https://github.com/NVIDIA/spark-rapids/pull/4701)|Decrease nighlty tests upper limitation to 7 [skip ci]|
122129
|[#4639](https://github.com/NVIDIA/spark-rapids/pull/4639)|Update changelog for 22.02 and archive info of some older releases [skip ci]|

docs/demo/AWS-EMR/Mortgage-ETL-GPU-EMR.ipynb

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
"\n",
1313
"Dataset is derived from Fannie Mae’s [Single-Family Loan Performance Data](http://www.fanniemae.com/portal/funding-the-market/data/loan-performance-data.html) with all rights reserved by Fannie Mae. This processed dataset is redistributed with permission and consent from Fannie Mae. For the full raw dataset visit [Fannie Mae]() to register for an account and to download\n",
1414
"\n",
15-
"Instruction is available at NVIDIA [RAPIDS demo site](https://rapidsai.github.io/demos/datasets/mortgage-data).\n",
15+
"Instruction is available at NVIDIA [RAPIDS demo site](https://docs.rapids.ai/datasets/mortgage-data).\n",
1616
"\n",
1717
"## Prerequisite\n",
1818
"\n",

docs/demo/GCP/Mortgage-ETL-CPU.ipynb

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
"\n",
99
"Dataset is derived from Fannie Mae’s [Single-Family Loan Performance Data](http://www.fanniemae.com/portal/funding-the-market/data/loan-performance-data.html) with all rights reserved by Fannie Mae. This processed dataset is redistributed with permission and consent from Fannie Mae. For the full raw dataset visit [Fannie Mae]() to register for an account and to download\n",
1010
"\n",
11-
"Instruction is available at NVIDIA [RAPIDS demo site](https://rapidsai.github.io/demos/datasets/mortgage-data).\n",
11+
"Instruction is available at NVIDIA [RAPIDS demo site](https://docs.rapids.ai/datasets/mortgage-data).\n",
1212
"\n",
1313
"### Prerequisite\n",
1414
"\n",

docs/demo/GCP/Mortgage-ETL-GPU.ipynb

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
"\n",
1313
"Dataset is derived from Fannie Mae’s [Single-Family Loan Performance Data](http://www.fanniemae.com/portal/funding-the-market/data/loan-performance-data.html) with all rights reserved by Fannie Mae. This processed dataset is redistributed with permission and consent from Fannie Mae. For the full raw dataset visit [Fannie Mae]() to register for an account and to download\n",
1414
"\n",
15-
"Instruction is available at NVIDIA [RAPIDS demo site](https://rapidsai.github.io/demos/datasets/mortgage-data).\n",
15+
"Instruction is available at NVIDIA [RAPIDS demo site](https://docs.rapids.ai/datasets/mortgage-data).\n",
1616
"\n",
1717
"### Prerequisite\n",
1818
"\n",

docs/download.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -619,8 +619,8 @@ account the scenario where input data can be stored across many small files. By
619619
CPU threads v0.2 delivers up to 6x performance improvement over the previous release for small
620620
Parquet file reads.
621621

622-
The RAPIDS Accelerator introduces a beta feature that accelerates [Spark shuffle for
623-
GPUs](get-started/getting-started-on-prem.md#enabling-rapidsshufflemanager). Accelerated
622+
The RAPIDS Accelerator introduces a beta feature that accelerates
623+
[Spark shuffle for GPUs](get-started/getting-started-on-prem.md#enabling-rapids-shuffle-manager). Accelerated
624624
shuffle makes use of high bandwidth transfers between GPUs (NVLink or p2p over PCIe) and leverages
625625
RDMA (RoCE or Infiniband) for remote transfers.
626626

docs/get-started/getting-started-databricks.md

+9-9
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,12 @@ The number of GPUs per node dictates the number of Spark executors that can run
2626
1. Adaptive query execution(AQE) and Delta optimization write do not work. These should be disabled
2727
when using the plugin. Queries may still see significant speedups even with AQE disabled.
2828

29-
```bash
30-
spark.databricks.delta.optimizeWrite.enabled false
31-
spark.sql.adaptive.enabled false
32-
```
29+
```bash
30+
spark.databricks.delta.optimizeWrite.enabled false
31+
spark.sql.adaptive.enabled false
32+
```
3333

34-
See [issue-1059](https://github.com/NVIDIA/spark-rapids/issues/1059) for more detail.
34+
See [issue-1059](https://github.com/NVIDIA/spark-rapids/issues/1059) for more detail.
3535

3636
2. Dynamic partition pruning(DPP) does not work. This results in poor performance for queries which
3737
would normally benefit from DPP. See
@@ -42,10 +42,10 @@ when using the plugin. Queries may still see significant speedups even with AQE
4242

4343
4. Cannot spin off multiple executors on a multi-GPU node.
4444

45-
Even though it is possible to set `spark.executor.resource.gpu.amount=N` (where N is the number
46-
of GPUs per node) in the in Spark Configuration tab, Databricks overrides this to
47-
`spark.executor.resource.gpu.amount=1`. This will result in failed executors when starting the
48-
cluster.
45+
Even though it is possible to set `spark.executor.resource.gpu.amount=1` in the in Spark
46+
Configuration tab, Databricks overrides this to `spark.executor.resource.gpu.amount=N`
47+
(where N is the number of GPUs per node). This will result in failed executors when starting the
48+
cluster.
4949

5050
5. Databricks makes changes to the runtime without notification.
5151

docs/get-started/getting-started-gcp.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -85,9 +85,9 @@ If you'd like to further accelerate init time to 4-5 minutes, create a custom Da
8585
## Run PySpark or Scala Notebook on a Dataproc Cluster Accelerated by GPUs
8686
To use notebooks with a Dataproc cluster, click on the cluster name under the Dataproc cluster tab
8787
and navigate to the "Web Interfaces" tab. Under "Web Interfaces", click on the JupyterLab or
88-
Jupyter link to start to use sample [Mortgage ETL on GPU Jupyter
89-
Notebook](../demo/GCP/Mortgage-ETL-GPU.ipynb) to process full 17 years [Mortgage
90-
data](https://rapidsai.github.io/demos/datasets/mortgage-data).
88+
Jupyter link to start to use sample
89+
[Mortgage ETL on GPU Jupyter Notebook](../demo/GCP/Mortgage-ETL-GPU.ipynb) to process full 17 years
90+
[Mortgage data](https://docs.rapids.ai/datasets/mortgage-data).
9191

9292
![Dataproc Web Interfaces](../img/GCP/dataproc-service.png)
9393

docs/get-started/getting-started-workload-qualification.md

+6-6
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@ This article describes the tools we provide and how to do gap analysis and workl
3030
### How to use
3131

3232
If you have Spark event logs from prior runs of the applications on Spark 2.x or 3.x, you can use
33-
the [Qualification tool](../spark-qualification-tool.md) and [Profiling
34-
tool](../spark-profiling-tool.md) to analyze them. The qualification tool outputs the score, rank
33+
the [Qualification tool](../spark-qualification-tool.md) and
34+
[Profiling tool](../spark-profiling-tool.md) to analyze them. The qualification tool outputs the score, rank
3535
and some of the potentially not-supported features for each Spark application. For example, the CSV
3636
output can print `Unsupported Read File Formats and Types`, `Unsupported Write Data Format` and
3737
`Potential Problems` which are the indication of some not-supported features. Its output can help
@@ -119,8 +119,8 @@ the driver logs with `spark.rapids.sql.explain=all`.
119119

120120
This log can show you which operators (on what data type) can not run on GPU and the reason.
121121
If it shows a specific RAPIDS Accelerator parameter which can be turned on to enable that feature,
122-
you should first understand the risk and applicability of that parameter based on [configs
123-
doc](../configs.md) and then enable that parameter and try the tool again.
122+
you should first understand the risk and applicability of that parameter based on
123+
[configs doc](../configs.md) and then enable that parameter and try the tool again.
124124

125125
Since its output is directly based on specific version of `rapids-4-spark` jar, the gap analysis is
126126
pretty accurate.
@@ -213,8 +213,8 @@ which is the same as the driver logs with `spark.rapids.sql.explain=all`.
213213

214214
This log can show you which operators (on what data type) can not run on GPU and the reason.
215215
If it shows a specific RAPIDS Accelerator parameter which can be turned on to enable that feature,
216-
you should first understand the risk and applicability of that parameter based on [configs
217-
doc](../configs.md) and then enable that parameter and try the tool again.
216+
you should first understand the risk and applicability of that parameter based on
217+
[configs doc](../configs.md) and then enable that parameter and try the tool again.
218218

219219
Since its output is directly based on specific version of `rapids-4-spark` jar, the gap analysis is
220220
pretty accurate.

docs/spark-profiling-tool.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -406,8 +406,8 @@ SQL Duration and Executor CPU Time Percent
406406
+--------+-------------------+-----+------------+--------------------------+------------+---------------------------+-------------------------+
407407
|appIndex|App ID |sqlID|SQL Duration|Contains Dataset or RDD Op|App Duration|Potential Problems |Executor CPU Time Percent|
408408
+--------+-------------------+-----+------------+--------------------------+------------+---------------------------+-------------------------+
409-
|1 |local-1626104300434|0 |1260 |false |131104 |DECIMAL:NESTED COMPLEX TYPE|92.65 |
410-
|1 |local-1626104300434|1 |259 |false |131104 |DECIMAL:NESTED COMPLEX TYPE|76.79 |
409+
|1 |local-1626104300434|0 |1260 |false |131104 |NESTED COMPLEX TYPE |92.65 |
410+
|1 |local-1626104300434|1 |259 |false |131104 |NESTED COMPLEX TYPE |76.79 |
411411
```
412412
413413
- Shuffle Skew Check:

docs/spark-qualification-tool.md

+3-6
Original file line numberDiff line numberDiff line change
@@ -318,8 +318,7 @@ Its summary report outputs the following information:
318318
2. Application duration
319319
3. SQL/DF duration
320320
4. Problematic Duration, which indicates potential issues for acceleration.
321-
Some of the potential issues include unsupported data formats such as Decimal 128-bit
322-
or User Defined Function (UDF) or any Dataset APIs.
321+
Some of the potential issues include User Defined Function (UDF) or any Dataset APIs.
323322
324323
Note: the duration(s) reported are in milli-seconds.
325324
Sample output in text:
@@ -335,13 +334,11 @@ In the above example, two application event logs were analyzed. “app-202105071
335334
than the “app-20210507174503-1704” because the score(in the csv output) for “app-20210507174503-2538”
336335
is higher than “app-20210507174503-1704”.
337336
Here the `Problematic Duration` is zero but please keep in mind that we are only able to detect certain issues.
338-
This currently includes some UDFs, some decimal operations and nested complex types.
337+
This currently includes some UDFs and nested complex types.
339338
The tool won't catch all UDFs, and some of the UDFs can be handled with additional steps.
340339
341340
Please refer to [supported_ops.md](./supported_ops.md)
342341
for more details on UDF.
343-
For decimals, the tool tries to parse for decimal operations but it may not capture all of the decimal operations
344-
if they aren’t in the event logs.
345342
346343
The second output is a more detailed output.
347344
Here is a sample output requesting csv style output:
@@ -358,7 +355,7 @@ Here is a brief description of each of column that is in the CSV:
358355
2. App ID: Spark Application ID.
359356
3. Score : A score calculated based on SQL Dataframe Task Duration and gets negatively affected for any unsupported operators.
360357
Please refer to [Qualification tool score algorithm](#Qualification-tool-score-algorithm) for more details.
361-
4. Potential Problems : Some UDFs, some decimal operations and nested complex types.
358+
4. Potential Problems : Some UDFs and nested complex types.
362359
5. SQL DF Duration: Time duration that includes only SQL/Dataframe queries.
363360
6. SQL Dataframe Task Duration: Amount of time spent in tasks of SQL Dataframe operations.
364361
7. App Duration: Total Application time.

docs/supported_ops.md

+6-8
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,12 @@ apply to other versions of Spark, but there may be slight changes.
1414

1515
# General limitations
1616
## `Decimal`
17-
The `Decimal` type in Spark supports a precision
18-
up to 38 digits (128-bits). The RAPIDS Accelerator in most cases stores values up to
19-
64-bits and will support 128-bit in the future. As such the accelerator currently only
20-
supports a precision up to 18 digits. Note that
21-
decimals are disabled by default in the plugin, because it is supported by a relatively
22-
small number of operations presently. This can result in a lot of data movement to and
23-
from the GPU, slowing down processing in some cases.
24-
Result `Decimal` precision and scale follow the same rule as CPU mode in Apache Spark:
17+
The `Decimal` type in Spark supports a precision up to 38 digits (128-bits).
18+
The RAPIDS Accelerator supports 128-bit starting from version 21.12 and decimals are
19+
enabled by default.
20+
Please check [Decimal Support](compatibility.md#decimal-support) for more details.
21+
22+
`Decimal` precision and scale follow the same rule as CPU mode in Apache Spark:
2523

2624
```
2725
* In particular, if we have expressions e1 and e2 with precision/scale p1/s1 and p2/s2

docs/tuning-guide.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -337,7 +337,7 @@ Custom Spark SQL Metrics are available which can help identify performance bottl
337337

338338
Not all metrics are enabled by default. The configuration setting `spark.rapids.sql.metrics.level` can be set
339339
to `DEBUG`, `MODERATE`, or `ESSENTIAL`, with `MODERATE` being the default value. More information about this
340-
configuration option is available in the <a href="configs.md#sql.metrics.level">configuration</a> documentation.
340+
configuration option is available in the [configuration documentation](configs.md#sql.metrics.level).
341341

342342
Output row and batch counts show up for operators where the number of output rows or batches are
343343
expected to change. For example a filter operation would show the number of rows that passed the

sql-plugin/src/main/scala/com/nvidia/spark/rapids/TypeChecks.scala

+6-8
Original file line numberDiff line numberDiff line change
@@ -1706,14 +1706,12 @@ object SupportedOpsDocs {
17061706
println()
17071707
println("# General limitations")
17081708
println("## `Decimal`")
1709-
println("The `Decimal` type in Spark supports a precision")
1710-
println("up to 38 digits (128-bits). The RAPIDS Accelerator in most cases stores values up to")
1711-
println("64-bits and will support 128-bit in the future. As such the accelerator currently only")
1712-
println(s"supports a precision up to ${DType.DECIMAL64_MAX_PRECISION} digits. Note that")
1713-
println("decimals are disabled by default in the plugin, because it is supported by a relatively")
1714-
println("small number of operations presently. This can result in a lot of data movement to and")
1715-
println("from the GPU, slowing down processing in some cases.")
1716-
println("Result `Decimal` precision and scale follow the same rule as CPU mode in Apache Spark:")
1709+
println("The `Decimal` type in Spark supports a precision up to 38 digits (128-bits). ")
1710+
println("The RAPIDS Accelerator supports 128-bit starting from version 21.12 and decimals are ")
1711+
println("enabled by default.")
1712+
println("Please check [Decimal Support](compatibility.md#decimal-support) for more details.")
1713+
println()
1714+
println("`Decimal` precision and scale follow the same rule as CPU mode in Apache Spark:")
17171715
println()
17181716
println("```")
17191717
println(" * In particular, if we have expressions e1 and e2 with precision/scale p1/s1 and p2/s2")

tools/src/main/scala/org/apache/spark/sql/rapids/tool/AppBase.scala

+2-9
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2021, NVIDIA CORPORATION.
2+
* Copyright (c) 2021-2022, NVIDIA CORPORATION.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -128,17 +128,10 @@ abstract class AppBase(
128128
}
129129
}
130130

131-
// Decimal support on the GPU is limited to less than 18 digits and decimals
132-
// are configured off by default for now. It would be nice to have this
133-
// based off of what plugin supports at some point.
134-
private val decimalKeyWords = Map(".*promote_precision\\(.*" -> "DECIMAL",
135-
".*decimal\\([0-9]+,[0-9]+\\).*" -> "DECIMAL",
136-
".*DecimalType\\([0-9]+,[0-9]+\\).*" -> "DECIMAL")
137-
138131
private val UDFKeywords = Map(".*UDF.*" -> "UDF")
139132

140133
protected def findPotentialIssues(desc: String): Set[String] = {
141-
val potentialIssuesRegexs = UDFKeywords ++ decimalKeyWords
134+
val potentialIssuesRegexs = UDFKeywords
142135
val issues = potentialIssuesRegexs.filterKeys(desc.matches(_))
143136
issues.values.toSet
144137
}
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
appIndex,App ID,sqlID,SQL Duration,Contains Dataset or RDD Op,App Duration,Potential Problems,Executor CPU Time Percent
2-
1,local-1626104300434,0,1260,false,131104,DECIMAL:NESTED COMPLEX TYPE,92.65
3-
1,local-1626104300434,1,259,false,131104,DECIMAL:NESTED COMPLEX TYPE,76.79
2+
1,local-1626104300434,0,1260,false,131104,NESTED COMPLEX TYPE,92.65
3+
1,local-1626104300434,1,259,false,131104,NESTED COMPLEX TYPE,76.79
44
1,local-1626104300434,2,130,false,131104,NESTED COMPLEX TYPE,90.48
5-
1,local-1626104300434,3,76,false,131104,DECIMAL:NESTED COMPLEX TYPE,97.56
5+
1,local-1626104300434,3,76,false,131104,NESTED COMPLEX TYPE,97.56
66
1,local-1626104300434,4,65,false,131104,NESTED COMPLEX TYPE,100.0
77
1,local-1626104300434,5,479,false,131104,NESTED COMPLEX TYPE,87.32
8-
1,local-1626104300434,6,95,false,131104,DECIMAL:NESTED COMPLEX TYPE,96.3
9-
1,local-1626104300434,7,65,false,131104,DECIMAL:NESTED COMPLEX TYPE,95.24
8+
1,local-1626104300434,6,95,false,131104,NESTED COMPLEX TYPE,96.3
9+
1,local-1626104300434,7,65,false,131104,NESTED COMPLEX TYPE,95.24
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
App Name,App ID,Score,Potential Problems,SQL DF Duration,SQL Dataframe Task Duration,App Duration,Executor CPU Time Percent,App Duration Estimated,SQL Duration with Potential Problems,SQL Ids with Failures,Read Score Percent,Read File Format Score,Unsupported Read File Formats and Types,Unsupported Write Data Format,Complex Types,Nested Complex Types
2-
Spark shell,local-1626104300434,1469.0,DECIMAL:NESTED COMPLEX TYPE,2429,1469,131104,88.35,false,160,"",20,100.0,"","",struct<firstname:string;middlename:array<string>;lastname:string>;struct<current:struct<state:string;city:string>;previous:struct<state:map<string;string>;city:string>>;array<struct<city:string;state:string>>;map<string;string>;map<string;array<string>>;map<string;map<string;string>>;array<array<string>>;array<string>,struct<firstname:string;middlename:array<string>;lastname:string>;struct<current:struct<state:string;city:string>;previous:struct<state:map<string;string>;city:string>>;array<struct<city:string;state:string>>;map<string;array<string>>;map<string;map<string;string>>;array<array<string>>
2+
Spark shell,local-1626104300434,1469.0,NESTED COMPLEX TYPE,2429,1469,131104,88.35,false,0,"",20,100.0,"","",struct<firstname:string;middlename:array<string>;lastname:string>;struct<current:struct<state:string;city:string>;previous:struct<state:map<string;string>;city:string>>;array<struct<city:string;state:string>>;map<string;string>;map<string;array<string>>;map<string;map<string;string>>;array<array<string>>;array<string>,struct<firstname:string;middlename:array<string>;lastname:string>;struct<current:struct<state:string;city:string>;previous:struct<state:map<string;string>;city:string>>;array<struct<city:string;state:string>>;map<string;array<string>>;map<string;map<string;string>>;array<array<string>>

tools/src/test/resources/QualificationExpectations/decimal_part_expectation.csv

-2
This file was deleted.

0 commit comments

Comments
 (0)