orc
Eine DuckDB-Erweiterung zum Lesen von Apache-ORC-Dateien, geschrieben in reinem Rust. Unterstützt alle ORC-Primitive, struct-, list- und map-Typen sowie alle Kompressionscodecs (Zlib, Snappy, LZO, LZ4, ZSTD).
Maintainer: alitrack
Installation und Laden
INSTALL orc FROM community;LOAD orc;Beispiel
-- Install and use the ORC extensionINSTALL orc FROM community;LOAD orc;
-- Read a single ORC fileSELECT * FROM read_orc('data.orc');
-- Read multiple ORC files with a glob patternSELECT * FROM read_orc('sales/*.orc');
-- Filter and aggregate (DuckDB applies filters post-scan)SELECT region, SUM(amount)FROM read_orc('sales.orc')WHERE year = 2024GROUP BY region;
-- Column projection is pushed down to the ORC readerSELECT col1, col2 FROM read_orc('big_table.orc');Über orc
Aufgebaut auf orc-rust,
einem nativen Rust-ORC-Reader, der Arrow-Record-Batches ausgibt.
Unterstützte ORC-Funktionen
- Datentypen: alle ORC-Primitive, struct, list, map
- Kodierungen: alle ORC-Kodierungen (direct, dictionary, RLE usw.)
- Kompression: Zlib, Snappy, LZO, LZ4, ZSTD
- Projektions-Pushdown: Spalten-Pruning über DuckDBs Optimizer
- Multi-Datei-Globs:
read_orc('*.orc')— alle Dateien müssen dasselbe Schema haben - Streaming: Dateien beliebiger Größe, gelesen in 2048-Zeilen-Batches
Bekannte Einschränkungen
- Schreibunterstützung:
orc-rust0.8+ hatArrowWriter, aber Kompression ist noch nicht implementiert (nur unkomprimiert). Schreibunterstützung wird zuduckdb_orchinzugefügt, sobaldorc-rustkomprimiertes Schreiben unterstützt. - Single-Threaded-Scan: derzeit sequenzieller Single-Threaded-Scan. ~5× langsamer als DuckDBs nativer Parquet-Reader bei großen Einzeldateien. Multi-Datei-Globs werden ebenfalls sequenziell gelesen. Stripe-Level-Parallelität ist geplant.
- Kein Filter-Pushdown: blockiert durch fehlende DuckDB-C-API
(
duckdb_table_function_supports_filter_pushdownnicht exponiert) - Kein Union-Typ: von
orc-rustupstream nicht unterstützt
Hinzugefügte Funktionen
| function_name | function_type | description | comment | examples |
|---|---|---|---|---|
| read_orc | table | NULL | NULL |
Überladene Funktionen
Diese Erweiterung fügt keine Funktionsüberladungen hinzu.
Hinzugefügte Typen
Diese Erweiterung fügt keine Typen hinzu.
Hinzugefügte Einstellungen
Diese Erweiterung fügt keine Einstellungen hinzu.