Connectors / Files & object stores
Apache Iceberg
sourceApache Iceberg source (REST/Glue/SQL/HMS catalogs; projection + filter pushdown, time travel, incremental snapshots)
Install
cargo install faucet-cli --features source-iceberg faucet init --source iceberg
# Cargo.toml — use it as a library cargo add faucet-source-iceberg
Starter config
source:
type: iceberg
config:
catalog:
type: rest # one of: rest, glue, sql, hms
# uri: null # Catalog endpoint URI.
# warehouse: null # Object-storage warehouse root, e.g.
# credential: null # REST bearer token or other catalog-specific credential.
# properties: {} # Arbitrary catalog properties passed through to the catalog builder and the warehouse file IO (e.g.
# --- Alternative variants — replace the block above with one of these ---
# type: glue
# uri: null
# warehouse: null
# credential: null
# properties: {}
#
# type: sql
# uri: null
# warehouse: null
# credential: null
# properties: {}
#
# type: hms
# uri: null
# warehouse: null
# credential: null
# properties: {}
table: "" # REQUIRED — Table to read, as `namespace.table` (multi-level namespaces are dot-separated: `lake.analytics.events`).
# columns: [] # Columns to read (projection).
# filter: null # Row filter pushed down to the scan, e.g.
# snapshot_id: null # Time travel: read this snapshot id instead of the current one.
# as_of_timestamp: null # Time travel: read the snapshot that was current at this RFC 3339 instant (e.g.
# batch_size: 1000 # Arrow batch size (rows per page).
# concurrency: 4 # Data files read concurrently.
# mode: null # How much of the table each run reads.
# on_rewrite: null # What an incremental run does when a snapshot since the bookmark rewrote existing data (`overwrite` / `delete`), or the b…
# on_expired: null # What an incremental run does when the bookmarked snapshot (or one between it and the current snapshot) has been expired …
Capabilities
| Replay | Non-deterministic replay |
|---|---|
| Exactly-once replay | No |
| Incremental | Yes |
| Dataset discovery | Yes |
| Reports lag | No |
| Compression | No |
Config fields
| Field | Type | Default | Description |
|---|---|---|---|
catalogrequired | object | — | Catalog type and connection settings. |
tablerequired | string | — | Table to read, as namespace.table (multi-level namespaces are dot-separated: lake.analytics.events). |
columns | array | [] | Columns to read (projection). Empty reads every column. |
filter | string | — | Row filter pushed down to the scan, e.g. status = 'active' and (amount >= 10 or vip is not null). |
snapshot_id | integer | — | Time travel: read this snapshot id instead of the current one. mode: full only; mutually exclusive with as_of_timestamp. |
as_of_timestamp | string | — | Time travel: read the snapshot that was current at this RFC 3339 instant (e.g. 2026-01-31T00:00:00Z). mode: full only. |
batch_size | integer | 1000 | Arrow batch size (rows per page). 0 emits one page per snapshot read. |
concurrency | integer | 4 | Data files read concurrently. |
mode | object | full | full (default) re-reads the table each run; incremental reads only data appended since the bookmarked snapshot. |
on_rewrite | object | fail | Incremental only: reaction to an overwrite / delete snapshot since the bookmark. |
on_expired | object | fail | Incremental only: reaction to a bookmarked snapshot that has expired. |
Get started
Your first pipeline runs in five minutes.
Install the CLI, scaffold a config, and move real data — nothing external to stand up.
curl -LsSf https://github.com/faucet-hq/faucet-stream/releases/latest/download/faucet-cli-installer.sh | sh brew install faucet-hq/faucet-stream/faucet-cli