Reuse file descriptors for LocalFileSystem object storage
- 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?
The ObjectStore implementation is stateless and doesn't allow for passing `File` descriptors.
This means for every request it's doing a `File::open` (and close) call, which creates overhead (mainly when doing a lot of small requests, e.g. with predicate pushdown enabled).
### Describe the solution you'd like
Implement an object store implementation for DataFusion that opens / reuses the `File`s for each path.
We can use `Arc` stored in hashmap for each file / path + read_at (stateless file read) to minimize overhead and maximize concurrency.
### Describe alternatives you've considered
_No response_
### Additional context
Also see
https://github.com/apache/arrow-rs-object-store/issues/622
https://github.com/apache/arrow-rs-object-store/issues/614
Guida per i contributori
Apri la guida per i contributori
Direzione di ricerca
Inizia con i punti di ingresso ObjectStore e LocalFileSystem di DataFusion, quindi esamina le issue collegate #622 e #614 di arrow-rs-object-store per individuare i vincoli correlati. Il lavoro è completo quando LocalFileSystem riutilizza i descrittori File aperti per percorso, preservando le letture concorrenti senza stato ed evitando un ciclo di apertura/chiusura per ogni richiesta.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- rust
- Ambito
- backend, data-engineering, performance
- Tipo di issue
- Funzionalità
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Ferma
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 35/100