`IcebergTableScan` ignores the session's `batch_size`
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 82/100
Direzione di ricerca
Inizia da crates/datafusion/src/read/scan.rs: segui IcebergDataSource::open fino a get_batch_stream e verifica come la dimensione del batch della sessione viene passata a TableScanBuilder. L’issue include una modifica suggerita per passare la dimensione configurata e chiamare with_batch_size; il lavoro è terminato quando le scansioni rispettano datafusion.execution.batch_size invece di usare sempre batch da 1.024 righe.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
IcebergDataSource::open does not pass execution.batch_size from the session config to get_batch_stream:
get_batch_stream never calls TableScanBuilder::with_batch_size:
So scans always read arrow-rs's default of 1,024-row batches. That's an eighth of DataFusion's default of 8,192, and SET datafusion.execution.batch_size has no effect on them.
Suggested fix:
--- a/crates/datafusion/src/read/scan.rs
+++ b/crates/datafusion/src/read/scan.rs
@@ -195,6 +195,7 @@ impl DataSource for IcebergDataSource {
.execution
.parquet
.enable_page_index,
+ context.session_config().batch_size(),
);
let stream = futures::stream::once(fut).try_flatten();
@@ -281,6 +282,7 @@ async fn get_batch_stream(
column_names: Option<Vec<String>>,
predicate: Option<Predicate>,
enable_page_index: bool,
+ batch_size: usize,
) -> Result<Pin<Box<dyn Stream<Item = Result<RecordBatch>> + Send>>> {
let scan_builder = match snapshot_id {
Some(snapshot_id) => table.scan().snapshot_id(snapshot_id),
@@ -296,6 +298,7 @@ async fn get_batch_stream(
}
let table_scan = scan_builder
.with_row_selection_enabled(enable_page_index)
+ .with_batch_size(Some(batch_size))
.build()
.map_err(to_datafusion_error)?;
- Lingua principale
- Rust
- Stelle
- 30
- Fork
- 30
- Merge medio
- 3g 19h
- PR unite (30g)
- 15
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
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-iceberg
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
apache/datafusion-iceberg#85 · 1 commento · 5 reazioni ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
apache/datafusion-iceberg#84 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
apache/datafusion-iceberg#75 ·
I maintainer di solito rispondono entro 1 giorno
-
Slow CI runnersAperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 18/100
apache/datafusion-iceberg#74 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
apache/datafusion-iceberg#73 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di apache/datafusion-iceberg
Issue simili
-
An EXE started from the shell with MAXALLOC FFFFh leaves a 0-paragraph free block after its ownApertabug low-priority
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
dividebysandwich/rust-dos#629 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
eliasstravik/herdr-projects#758 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
-
enhancement needs:sonnet ready-for-agent
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno