Optimizing multi-source byte range reading in JSON reader
Description
This piece of work seeks to achieve two goals - (i) reducing repeated reading of byte range chunks in the JSON reader, and (ii) enabling multi-source byte range reading for chunks spanning sources.
- We expand on the idea outlined in #15185 to reduce the repeated reading of follow-on chunks while searching for the end of the last row in the requested chunk. After the requested chunk, the following chunks are divided into subchunks, and read until the delimiter character is reached.
- We estimate the buffer size needed for the entire byte range, and compute offsets per source into the buffer.
Visualization of the performance improvement with this optimization
Checklist
- [X] I am familiar with the Contributing Guidelines.
- [X] New or existing tests cover these changes.
- [x] The documentation is up to date with these changes.
This pull request requires additional validation before any workflows can run on NVIDIA's runners.
Pull request vetters can view their responsibilities here.
Contributors can view more details about this message here.
/ok to test
/ok to test
/ok to test
/ok to test
/ok to test
/ok to test
Visualization of performance improvement achieved with this PR as measured by the JSON reader options benchmark with normalize_single_quotes=NO normalize_whitespace=NO mixed_types_as_string=NO recovery_mode=FAIL
/ok to test
/ok to test
/ok to test
/ok to test
/ok to test
/ok to test
/ok to test
/ok to test
/ok to test
/ok to test
/ok to test
/ok to test
/ok to test
/ok to test
/merge