Repository navigation
[Data] build row-group sub-fragments lazily so footer reads run in the scan threads - #67469
Conversation
Signed-off-by: You-Cheng Lin <mses010108@gmail.com>
There was a problem hiding this comment.
Code Review
This pull request updates the Parquet file chunking utilities in Ray Data. Specifically, in parquet_file_chunking_utils.py, when per_row_group_offsets is not present, it now lazily creates a fragment using fragment.format.make_fragment instead of recursively calling _subset. There are no review comments, and we have no feedback to provide.
|
I've verified the behavior locally with a Parquet file containing multiple row groups.
The change looks correct to me. LGTM. |
Description
We previously used
fragment.subsetto construct Parquet sub-fragments. However, it eagerly fetches footers during construction, which causes performance issues when many small files are packed into a single task. Because sub-fragment construction runs sequentially, this eagerly fetched metadata becomes a major bottleneck.This PR switches to
fragment.format.make_fragment, deferring the footer fetching to the scanning stage. Since scanning runs across multiple threads, the footer retrieval is now fully parallelized.Mirco benchmark
Reading sf1000 supplier table on my laptop
Related issues
Additional information