Comet Native Executors: sample a range exchange without re-running the stages below it
I maintainer di solito rispondono entro 2 giorni
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 35/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Attiva
- Ambito
- backend, distributed-systems
Direzione di ricerca
Start with range_exchange in native/native-executors/src/assembly.rs and collect in src/frontend.rs to trace how sampling runs the stages below an exchange. Compare the proposed approaches, including materialized shuffle reuse and runtime sampling; done means range exchanges can be sampled without repeatedly rerunning lower stages. The issue does not select an approach, so clarify the design before implementation.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
What is the problem the feature request solves?
To range-partition an exchange, the Comet scheduler (#7289) runs a sampling job of its own: a SampleExec over the stage that feeds the exchange. That is a separate Ballista job, so it runs that stage and every stage below it, then the query runs them all again. Every further range exchange above them adds another run. Spark's RangePartitioner also re-runs the child, but it reuses the shuffle outputs below it.
The sampling jobs also run one after another while the query is being planned, even for range exchanges whose inputs don't depend on each other.
Describe the potential solution
Options, roughly from least to most work:
- Sample range exchanges whose inputs are independent concurrently.
- Sample from the materialized shuffle output below the exchange, so only the producing stage runs twice.
- Find the split points at run time, as Ballista's adaptive planner does for window functions:
RuntimeStatsExeckeeps a quantile sketch andUnorderedRangeRepartitionExeccuts by it. That covers only the first sort key today, so it would need compound keys. The driver-side sampler,SampleExecand its codec would then go away.
Additional context
The sampling is range_exchange in native/native-executors/src/assembly.rs and collect in src/frontend.rs.
Part of #7288.
Willingness to contribute
Yes. I can contribute this feature independently.
- Lingua principale
- Scala
- Stelle
- 1.3k
- Fork
- 405
- Merge medio
- 3g 1h
- PR unite (30g)
- 277
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di apache/datafusion-comet
-
area:writer enhancement requires-triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
apache/datafusion-comet#7463 ·
I maintainer di solito rispondono entro 2 giorni
-
requires-triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
apache/datafusion-comet#7458 ·
I maintainer di solito rispondono entro 2 giorni
-
requires-triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
apache/datafusion-comet#7453 ·
I maintainer di solito rispondono entro 2 giorni
-
area:ci enhancement priority:low requires-triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
apache/datafusion-comet#7319 · 1 commento ·
I maintainer di solito rispondono entro 2 giorni
-
area:ci bug priority:low requires-triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
apache/datafusion-comet#7315 ·
I maintainer di solito rispondono entro 2 giorni
Tutte le issue di apache/datafusion-comet
Issue simili
-
Python: zadd stringifies bytes/bytearray/memoryview members (silent data corruption), including in BatchForse già presa @prateek-kumar-improving l’ha presa oggi. Apertabug 🐞 python 🐍
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
valkey-io/valkey-glide#7521 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 64/100
I maintainer di solito rispondono entro 1 giorno
-
v4 LSU does not mask TLB exceptions on miss: PTW refill causes Load Access Fault on M-mode loadAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
riscv-boom/riscv-boom#835 ·
-
Add a base64url Stringable helperForse già presa @nafg l’ha presa 1 giorno fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
nafg/simple-router#362 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
propensive/soundness#2351 ·
I maintainer di solito rispondono entro 1 giorno