NVIDIA / NVIDIA/cudf

[FEA] JSON reader performance projects

Open
#17,718 0 comments 0 reactions 0 assignees View on GitHub
cuIO feature request libcudf Python
Dominant language
C++
Stars
9.8k
Forks
1.1k
Avg merge
3d 6m
Merged PRs (30d)
278

Description

### Background

RAPIDS cuDF released python support for nested JSON reading in 23.02, and completed the work for Spark-RAPIDS integration in 24.12. We are aware of several improvements that cuDF could make to minimize pre- and post-processing in Spark-RAPIDS. There are also some features in the JSON reader that would benefit NeMo Curator. Finally, we have collected ideas for performance gains and improved code quality. This story issue highlights the most significant outstanding issues, and the full issue set is documented in the [Nested JSON reader](https://github.com/rapidsai/cudf/milestone/13) milestone.

### Improvements for Spark-RAPIDS
| Status | Issue | Outlook |
|--|--|--|
| | Empty lines #5712 | Currently Spark-RAPIDS checks and replaces empty lines with `{}` |
| | Add some validation options #15222 | We may need cuDF changes to allow validation of a new token type |
| 🔄 #17575 | Root-level list support | See issue in https://github.com/NVIDIA/spark-rapids/issues/11717 |

### Improvements for NeMo Curator
| Status | Issue | Outlook |
|--|--|--|
| | Add a column with filenames index in cudf.read_json #15960 | To be addressed in #17480 (confirmation needed). Difficult due to multi-source row tracking. |

### Improvements for cuDF-python
| Status | Issue | Outlook |
|--|--|--|
| | Make cuDF JSON writer default https://github.com/rapidsai/cudf/issues/16993 | |

### Performance projects
| Status | Issue | Outlook |
|--|--|--|
| | Refactoring JSON reader tree algorithms with Compressed Sparse Row (CSR) #15903 | #15979 introduced CSR data structure, and 🔄 #16205 focuses on constructing device JSON columns. Also related to #16965 |
| | Improved parsing kernel #16965 | Especially for wide/deep tables, we would benefit from processing multiple columns per kernel, instead of the column-per-kernel implementation today. Performance improvement for cases without much pruning. |
| | Faster total symbol calculation in FST #17114 | |
| | Optimizations for flat JSON | Needs scoping to estimate the potential for performance improvements |

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.