Connectors / Warehouses

Databricks

sink

Databricks 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

FieldTypeDefaultDescription
workspace_url
required
string — Workspace base URL, e.g. https://dbc-abc123.cloud.databricks.com.
warehouse_id
required
string — Target SQL warehouse id.
auth
required
object — Authentication (PAT / OAuth bearer), inline or via a shared auth: { ref } (use an oauth2 client-credentials provider for an M2M service principal).
schema
required
string — Target schema.
table
required
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