Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

perf: use extend when buffering partition row indices in the native shuffle writer

Chiusa Adatta ai principianti
#7,072 2 commenti 0 reazioni 1 assegnatario Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

@HarshilMital ci sta già lavorando.

Dal 17/10/2026.

  • #7097 di @Jbansal2 — aperta

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
78/100
Tipo di issue
Refactoring
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
rust, spark

Direzione di ricerca

Il ciclo da sostituire si trova in MultiPartitionShuffleRepartitioner::buffer_partitioned_batch_may_spill in native/shuffle/src/partitioners/multi_partition.rs, dove una chiamata a reserve è seguita da chiamate push per ogni riga. Leggi quella funzione, poi compila il benchmark con cargo bench --bench shuffle_writer e salva una baseline prima di modificare il codice. Il lavoro è completo quando il ciclo diventa un extend sulle stesse tuple, il benchmark viene confrontato con la baseline e il risultato viene riportato anche se rientra nel rumore.

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

Descrizione

area:shuffle enhancement good first issue performance requires-triage
What is the problem the feature request solves?

MultiPartitionShuffleRepartitioner::buffer_partitioned_batch_may_spill in native/shuffle/src/partitioners/multi_partition.rs pushes the row indices of each partition one at a time after reserve:

indices.reserve(row_indices.len());
for row_idx in row_indices {
    indices.push((buffered_partition_idx, *row_idx));
}

Vec::push re-checks capacity on every iteration. indices.extend(row_indices.iter().map(|&r| (buffered_partition_idx, r))) gets the trusted-length specialization and writes the tuples in one pass.

Describe the potential solution

Replace the loop with extend. Run cargo bench --bench shuffle_writer before and after (save a baseline with --save-baseline before); the change is small, so report the result either way and drop it if it is within noise.

Additional context

Micro item from #5002, carried into #5905. Good first issue.

Lingua principale
Scala
Stelle
1.3k
Fork
391
Merge medio
2g 12h
PR unite (30g)
428

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di apache/datafusion-comet

Tutte le issue di apache/datafusion-comet

Issue simili

Altre issue su Scala

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.