[VL] Make ColumnarShuffleExchangeExec extensible for different serializers
- Dominant language
- Scala
- Stars
- 1.6k
- Forks
- 657
- Avg merge
- 2d 14h
- Merged PRs (30d)
- 80
Description
An API `#isUseCelebornShuffleManager` in the common module is heavily relied in our code:
https://github.com/apache/incubator-gluten/blob/4017788a1e5d782d844260528bb2a49ccff02e44/gluten-substrait/src/main/scala/org/apache/gluten/config/GlutenConfig.scala#L132-L136
The API is related tp Celeborn RSS, which is plugged in Gluten's framework as an optional dependency.
Having this kind of API in common module weakens the extensibility and portability of the core code.
To enhance, we could make ColumnarShuffleExchangeExec extensible so serializer instances can be inlined into the plan node. So we don't have to call `#isUseCelebornShuffleManager` to find a proper serializer anymore.
Contributor guide
Research direction
Start by reading GlutenConfig.scala, especially the isUseCelebornShuffleManager API, and then trace ColumnarShuffleExchangeExec in the common module. Determine how serializer instances could be carried by the plan node and define completion as removing the need to select a serializer through that API, while preserving optional Celeborn integration.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- scala, spark
- Domain
- backend, distributed-systems
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100