Connectors / Warehouses
Databricks
sinkDatabricks SQL warehouse sink; append/upsert/delete/overwrite, exactly-once, schema evolution, staged COPY INTO
Install
cargo install faucet-cli --features sink-databricks faucet init --sink databricks
# Cargo.toml — use it as a library cargo add faucet-sink-databricks
Starter config
sink:
type: databricks
config:
workspace_url: "" # REQUIRED — Workspace base URL, e.g.
warehouse_id: "" # REQUIRED — Target SQL warehouse id.
auth:
type: pat # one of: pat, token
config:
token: "" # REQUIRED — The token string (use `${env:…}` / `${vault:…}` to inject).
# --- Alternative variants — replace the block above with one of these ---
# type: token
# config:
# token: "" # REQUIRED
# catalog: "" # Unity Catalog catalog.
schema: "" # REQUIRED — Target schema.
table: "" # REQUIRED — Target table.
# create_table: true # Create the table from the first page's inferred schema when it does not exist.
# load_method: null # How a page is loaded into the table.
# staging: null # Staging location for `copy_into` / `auto`.
# copy_threshold_bytes: 1048576 # `auto` stages a page whose estimated size is at least this many bytes.
# batch_size: 1000 # Rows per `INSERT` / `MERGE` statement on the insert path (`0` = no row limit — statements are then bounded only by `max_…
# max_statement_bytes: 8388608 # Upper bound on one statement's SQL text on the insert path; a page is split into several statements above it.
# wait_timeout_secs: 50 # Server-side wait before a statement goes async (`0` or `5`–`50` s).
# poll_interval_ms: 1000 # Poll cadence while a statement is queued or running (a serverless warehouse may take a minute to start).
# statement_timeout_secs: 3600 # Client deadline for one statement; the statement is cancelled when it is exceeded.
# max_retries: 5 # Retries on `429` / `503` and on Delta concurrent-write conflicts of idempotent statements.
# retry_backoff_ms: 1000 # Base of the exponential retry backoff.
# write_mode: null # Write semantics for a sink.
# key: [] # Key columns.
# delete_marker: null # Optional.
# rollback: null # Runtime rollback settings (#706): the run id to journal under, the run-id column, and whether to journal before-images / keep a replaced table.
Capabilities
| Delivery | Exactly-once (atomic watermark) |
|---|---|
| Write modes | append, upsert, delete, overwrite |
| Exactly-once writes | Yes |
| Schema evolution | Yes |
| Scoped cleanup | No |
| Staged bulk load | Yes |
| Run rollback | No |
| Compression | No |
Config fields
| Field | Type | Default | Description |
|---|---|---|---|
workspace_urlrequired | string | — | Workspace base URL, e.g. https://dbc-abc123.cloud.databricks.com. |
warehouse_idrequired | string | — | Target SQL warehouse id. |
authrequired | object | — | Authentication (PAT / OAuth bearer), inline or via a shared auth: { ref } (use an oauth2 client-credentials provider for an M2M service principal). |
schemarequired | string | — | Target schema. |
tablerequired | string | — | Target table. |
catalog | string | — | Unity Catalog catalog. When unset, the warehouse's default catalog. |
create_table | boolean | true | Create the table from the first page's inferred schema when it does not exist. Default true. |
load_method | object | auto | Load path. Default auto. |
staging | object | — | Staging location for copy_into / auto. |
copy_threshold_bytes | integer | 1048576 | auto stages a page whose estimated size is at least this many bytes. Default 1 MiB. |
batch_size | integer | 1000 | Rows per INSERT / MERGE statement on the insert path (0 = no row limit — statements are then bounded only by max_statement_bytes). |
max_statement_bytes | integer | 8388608 | Upper bound on one statement's SQL text on the insert path; a page is split into several statements above it. Default 8 MiB (the API accepts up to 16 MiB). |
wait_timeout_secs | integer | 50 | Server-side wait before a statement goes async (0 or 5–50 s). |
poll_interval_ms | integer | 1000 | Poll cadence while a statement is queued or running (a serverless warehouse may take a minute to start). Default 1000 ms. |
statement_timeout_secs | integer | 3600 | Client deadline for one statement; the statement is cancelled when it is exceeded. 0 waits indefinitely. Default 3600 s. |
max_retries | integer | 5 | Retries on 429 / 503 and on Delta concurrent-write conflicts of idempotent statements. Default 5. |
retry_backoff_ms | integer | 1000 | Base of the exponential retry backoff. Default 1000 ms. |
write_mode | object | append | Append (default), upsert, or delete. |
key | array | [] | Key columns. Required and non-empty for upsert/delete; ignored for append. |
delete_marker | object | — | Optional. Upsert only: rows whose field matches one of values are deletes; all others are upserts. The marker field is stripped from upsert rows before writing. |
rollback | object | — | Runtime rollback settings (#706): the run id to journal under, the run-id column, and whether to journal before-images / keep a replaced table. Injected per invocation by the CLI when a config has a top-level rollback: block — not meant to be written by hand. |
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