Reuse Parquet OffsetIndex objects and direct-plan decisions
- Ngôn ngữ chính
- C++
- Star
- 65
- Fork
- 25
- Merge trung bình
- 2 ngày 12 giờ
- Pull request đã merge (30 ngày)
- 80
Mô tả
### Problem
Selective Parquet reads repeat CPU work within one file reader: Arrow 17 reparses OffsetIndex on each lookup, page planning scans page locations for sparse row selections, and decoding rebuilds a direct-read plan just to determine whether compressed row coordinates apply.
The byte cache in #272 reduces repeated I/O but does not eliminate this parsing and planning work.
### Proposed improvement
- Reuse parsed OffsetIndex objects within each retained row-group reader.
- Seek across page gaps for sparse selections and visit each selected page once.
- Reuse the direct-plan decision during decoding.
Preserve index validation, dictionary handling, per-leaf row coordinates and missing-index fallbacks. Keep parsed objects reader-local without introducing a shared data cache or public option.
### Validation
Check selected values and index lifetimes, including sparse/dense selections and the row-group retention limit. Compare against main with the format benchmark, reporting latency and storage bytes without assuming a general speedup.
Implementation: #314.
Hướng dẫn đóng góp
Hướng nghiên cứu
Bắt đầu bằng cách kiểm tra issue #314, được nêu là phần triển khai cho công việc này. Xác thực các giá trị đã chọn và thời gian tồn tại của index trên các lựa chọn sparse và dense, bao gồm các giới hạn lưu giữ row-group, sau đó so sánh format benchmark với main về độ trễ và số byte lưu trữ mà không giả định có sự tăng tốc nói chung.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- cpp
- Lĩnh vực
- data-engineering, performance
- Loại issue
- Tính năng
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức độ hoạt động
- Đình trệ
- Độ rõ ràng
- Khá rõ ràng
- Mức phù hợp với người mới
- 25/100