apache / apache/datafusion

Avoid unnecessary RepartitionExec with RoundRobinBatch partitioning

Aperta
#4,368 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub
enhancement
Lingua principale
Rust
Stelle
9.3k
Fork
2.4k
Merge medio
3g 11h
PR unite (30g)
360

Descrizione

**Is your feature request related to a problem or challenge? Please describe what you are trying to do.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
(This section helps Arrow developers understand the context and *why* for this feature, in addition to the *what*)

The current `Enforcement` rule implementation does not take the local repartition requirements into account.
And the RoundRobinBatch RepartitionExec was added by the `Repartition` rule which might add unnecessary
RepartitionExecs.

We can refer to PrestoSQL/Trino's approach and implement a top-down and requirement driven process to add
RepartitionExecs on demands.

https://github.com/trinodb/trino/blob/45e111cf6b775a03a92a13af06f22eecd1a40787/core/trino-main/src/main/java/io/trino/sql/planner/optimizations/AddLocalExchanges.java

**Describe the solution you'd like**
A clear and concise description of what you want to happen.

**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.

**Additional context**
Add any other context or screenshots about the feature request here.

Guida per i contributori

Apri la guida per i contributori

Direzione di ricerca

Inizia leggendo le implementazioni delle regole Enforcement e Repartition per capire come vengono attualmente gestiti i requisiti di repartitioning locale e i RoundRobinBatch RepartitionExecs. Confronta il design con l’implementazione collegata di Trino AddLocalExchanges. Il lavoro è completato quando il planner aggiunge RepartitionExec solo quando necessario ed evita i repartitioning RoundRobinBatch non necessari.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
rust
Ambito
databases
Tipo di issue
Funzionalità
Difficoltà
5/5
Tempo stimato
Più di una settimana
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
35/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.