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 extension
INSTALL orc FROM community;
LOAD orc;
-- Read a single ORC file
SELECT * FROM read_orc('data.orc');
-- Read multiple ORC files with a glob pattern
SELECT * FROM read_orc('sales/*.orc');
-- Filter and aggregate (DuckDB applies filters post-scan)
SELECT region, SUM(amount)
FROM read_orc('sales.orc')
WHERE year = 2024
GROUP BY region;
-- Column projection is pushed down to the ORC reader
SELECT 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-rust 0.8+ hat ArrowWriter, aber Kompression ist noch nicht implementiert (nur unkomprimiert). Schreibunterstützung wird zu duckdb_orc hinzugefügt, sobald orc-rust komprimiertes 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_pushdown nicht exponiert)
  • Kein Union-Typ: von orc-rust upstream 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.