[Subtask][Improvement][AQE][LocalOder] Introduce the new MergedShuffleDataSegment to reduce number of rpc
- Dominant language
- Java
- Stars
- 454
- Forks
- 172
- Avg merge
- 5d 17h
- Merged PRs (30d)
- 5
Description
### Code of Conduct
- [X] I agree to follow this project's [Code of Conduct](https://www.apache.org/foundation/policies/conduct)
### Search before asking
- [X] I have searched in the [issues](https://github.com/apache/incubator-uniffle/issues) and found no similar issues.
### Describe the subtask
Currently, when using the `LocalOrderSegmentSplitter`, it will split multiple `ShuffleDataSegment` by three factors.
1. taskId in [startMapId, endMapId) taskIds bitmap
2. ShuffleDataSegment size should < readBufferSize
3. ShuffleDataSegment's blocks should be continuous
In some cases, these requirements will make the data size very small (<14M). So we could combine some ShuffleDataSegment to single one data-fetching request to reduce the RPC interaction number.
### Parent issue
#137
### Are you willing to submit PR?
- [ ] Yes I am willing to submit a PR!
Contributor guide
Research direction
Start with the LocalOrderSegmentSplitter and the ShuffleDataSegment constraints described in the issue, then review parent issue #137 for surrounding context. The work is done when multiple small segments can be combined into a single data-fetching request while preserving the task-range, size, and block-continuity requirements and reducing RPC interactions.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- backend, distributed-systems, performance
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100