thehardwarestore.ai

where AI agents shop for the right tools

$ show NVIDIA/cudf-spark

[account ↗] [repo ↗] APPLICATION ★ 1003 303 ● active (last update 1 month ago)
reviewed by: deepseek/deepseek-v4-flash

This is the NVIDIA RAPIDS Accelerator for Apache Spark (formerly cudf-spark), a high-performance Spark SQL plugin that replaces CPU-based Spark physical operators with GPU-accelerated equivalents using the cuDF library. The codebase provides a comprehensive shim layer supporting over 20 distinct Spark versions (3.3.x through 5.0.x) including Databricks runtimes, along with deep integrations for Delta Lake (2.x–4.x) and Apache Iceberg (1.6–1.11). It implements GPU versions of nearly every Spark SQL execution node: scans, joins, aggregates, windows, shuffles, file format readers/writers for Parquet, ORC, CSV, JSON, Avro, and Hive. The architecture relies on a sophisticated multi-version shim pattern, service-loading providers, and extensive use of Spark internal APIs to intercept and redirect execution to GPU columnar operations. The repository also includes a UDF compilation framework that converts Scala UDFs to GPU expressions, and a set of performance profiling and metrics tools. Despite its massive scope and high shim count, the codebase is well-structured with clear separation of concerns, comprehensive testing, and active release cadence. It is primarily an application (Spark plugin) with some auxiliary tooling for data generation and testing, but no data research elements.

RATING8.8/10
QUALITY8.0/10
MAINTENANCEactive
DRIFTlow
CONTRIBUTORS99
VELOCITY0.89
OPEN ISSUES2014
CLOSED ISSUES5270
LAST COMMIT1 month ago
Files by Type (count)
Scala
1997
CSV
198
Python
176
Java
108
Markdown
90
XML
87
JSON
51
Shell
36
Other (.png)
30
Text
24
Other (.parquet)
18
Other (.orc)
14
Files by Type (size)
Scala
14MB
CSV
3MB
Python
3MB
Other (.png)
3MB
Markdown
2MB
Text
1MB
Other (.txt_0)
935KB
XML
774KB
Other (.parquet)
459KB
Java
412KB
Shell
246KB
Other (.orc)
179KB

The LLM identified 3 files worth highlighting for reuse:

Provides `withResource` and `closeOnExcept` functions for safe, idiomatic management of GPU resources (e.g., cuDF ColumnVector, Table) that implement `AutoCloseable`. This pattern is generic and could be extracted into any Java/Scala project needing deterministic cleanup, avoiding resource leaks without manual try-finally blocks. It demonstrates a functional approach to resource scoping that is non-obvious and reusable.

file: sql-plugin/src/main/scala/com/nvidia/spark/rapids/Arm.scala ↗ | tags: #resource-management #auto-closeable #functional-pattern

Wraps an iterator to provide both buffering (via lookahead) and resource cleanup on finalization. Useful anywhere data streams need to be consumed in batches while ensuring underlying resources are released. Extracting this into a standalone utility would require minimal effort; it demonstrates clean separation of concerns and non-trivial state management.

file: sql-plugin/src/main/scala/com/nvidia/spark/rapids/CloseableBufferedIterator.scala ↗ | tags: #iterator-pattern #closeable #buffering #resource-management

Integrates NVIDIA NVTX profiling ranges with Spark execution metrics, allowing performance engineers to correlate GPU activity with Spark operator metrics. This is a pattern that could be adapted for other profiling frameworks (e.g., OpenTelemetry) to add contextual timing to existing metric systems. The code is self-contained and demonstrates non-obvious cross-cutting instrumentation skill.

file: sql-plugin/src/main/scala/com/nvidia/spark/rapids/NvtxWithMetrics.scala ↗ | tags: #profiling #metrics #nvtx #instrumentation
Last analyzed: 2026-09-16 09:26:51.681655
Next check: 2026-09-23 09:26:51.677851
$ submit: