--- warning: DO NOT CHANGE THIS MANUALLY, THIS IS GENERATED BY https://github.com/duckdb/community-extensions repository, check README there title: hudi excerpt: | DuckDB Community Extensions Query Apache Hudi COW and MOR tables directly in DuckDB — full scans, time-travel (as_of), incremental windows, and table metadata — powered by the Rust hudi-rs kernel. extension: name: hudi description: Query Apache Hudi COW and MOR tables directly in DuckDB — full scans, time-travel (as_of), incremental windows, and table metadata — powered by the Rust hudi-rs kernel. version: 0.3.1 language: Rust build: cmake license: MIT excluded_platforms: "wasm_mvp;wasm_eh;wasm_threads;linux_amd64_musl;windows_amd64;windows_amd64_mingw;windows_amd64_rtools" requires_toolchains: "rust" maintainers: - alitrack repo: github: alitrack/duckdb-hudi ref: 942dfb3fbc173d3157ae6a9e240a81e4f800d8e1 variegata: c15d5e6c4960ba429d804653da60834cff2fbfb8 docs: hello_world: | -- Read a Hudi COW table INSTALL hudi FROM community; LOAD hudi; SELECT * FROM read_hudi('/path/to/hudi_table') WHERE dt = '2026-01-01'; -- Time-travel to the latest commit <= an instant SELECT * FROM read_hudi('/path/to/hudi_table', as_of => '20260101000000000'); -- Incremental read of changes in (start, "end"] -- ("end" is a reserved word, so quote it as a named parameter) SELECT * FROM read_hudi('/path/to/hudi_table', start => '20260101000000000', "end" => '20260102000000000'); -- Table metadata: type, latest commit, file counts SELECT hudi_info('/path/to/hudi_table'); extended_description: | ## duckdb-hudi DuckDB extension that reads [Apache Hudi](https://hudi.apache.org/) tables (COW and MOR) using the [hudi-rs](https://crates.io/crates/hudi) Rust kernel. Source: https://github.com/alitrack/duckdb-hudi ### Install ```sql INSTALL hudi FROM community; LOAD hudi; ``` ### Features - Full scan of COW and MOR Hudi tables - Time-travel via `as_of` (query a table at a specific instant) - Incremental reads (new/changed records since a checkpoint) - Table schema + metadata queries - Parallel scanning ### Build note The extension is built from the DuckDB C-API Rust template and its `hudi` dependency pulls in the Lance crate, which runs `prost-build` at compile time. Building therefore requires `protoc` to be available (this extension declares `requires_toolchains: rust`; the protobuf compiler is the one toolchain not yet in the default community build environment — see the PR description for the resolution). extension_star_count: 3 extension_star_count_pretty: 3 extension_download_count: 820 extension_download_count_pretty: 820 image: '/images/community_extensions/social_preview/preview_community_extension_hudi.png' layout: community_extension_doc --- ### Compatibility Matrix This table covers all DuckDB releases that have not reached [end-of-life](https://duckdb.org/release_calendar), including LTS releases, and shows the 2 most recent patch releases of each. Older patch releases are not listed, but the extension may be available for them as well.
| Platform | 1.4.4 | 1.4.5 | 1.5.5 | 1.5.6 | 2.0.0 | | :--- | :---: | :---: | :---: | :---: | :---: | | Linux AMD64 | ❌ | ❌ | ❌ | ✅ | ✅ | | Linux ARM64 | ❌ | ❌ | ❌ | ✅ | ✅ | | macOS AMD64 | ❌ | ❌ | ❌ | ✅ | ✅ | | macOS ARM64 | ❌ | ❌ | ❌ | ✅ | ✅ | | Windows AMD64 | ❌ | ❌ | ❌ | ✅ | ✅ | | Windows ARM64 | ❌ | ❌ | ❌ | ❌ | ❌ | | WebAssembly | ❌ | ❌ | ❌ | ❌ | ❌ | ### Installing and Loading ```sql INSTALL {{ page.extension.name }} FROM community; LOAD {{ page.extension.name }}; ``` {% if page.docs.hello_world %} ### Example ```sql {{ page.docs.hello_world }}``` {% endif %} {% if page.docs.extended_description %} ### About {{ page.extension.name }} {{ page.docs.extended_description }} {% endif %} ### Added Functions
| function_name | function_type | description | comment | examples | |---------------|---------------|-------------|---------|----------| | hudi_commits | table | NULL | NULL | | | hudi_files | scalar | NULL | NULL | | | hudi_info | scalar | NULL | NULL | | | hudi_mdt | table | NULL | NULL | | | hudi_stats | table | NULL | NULL | | | read_hudi | table | NULL | NULL | | ### Overloaded Functions
This extension does not add any function overloads. ### Added Types
This extension does not add any types. ### Added Settings
| name | description | input_type | scope | aliases | typed_value | |-------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------|--------|---------|-------------| | hudi_row_estimate | Report the kernel's row count of the planned file slices as the estimated cardinality of a read_hudi scan (the count is size-based unless the metadata table records it) | BOOLEAN | GLOBAL | [] | false | | temp_directory | Set the directory to which temporary files are written. | VARCHAR | GLOBAL | [] | post.db.tmp |