ADBC Driver for Apache Druid¶
Driver Version v0.1.0-alpha.1 Release Date 2026-09-14 Tested With Apache Druid 37
Warning
This is documentation for a prerelease version.
This driver provides access to Apache Druid , a high-performance, real-time analytics database.
Note
This project is not part of the Apache Software Foundation.
Installation & Quickstart¶
The Druid driver can be installed with dbc :
dbc install --pre druid
Connecting¶
To use the driver, provide the URI of a Druid database as the uri option.
from adbc_driver_manager import dbapi
connection = dbapi.connect(
driver="druid",
db_kwargs={
"uri": "druid://localhost:8888?tls=false",
},
)
Note: The example above is for Python using the adbc-driver-manager package but the process will be similar for other driver managers. See adbc-quickstarts .
Connection String Format¶
druid://[username[:password]@]host[:port][/path][?tls=true|false&tls_ca=path]
Components:
Scheme:
druid://(also acceptshttp://andhttps://)username: HTTP Basic authentication username (optional)password: HTTP Basic authentication password (optional; requires a username)host: Druid Router or Broker host (required)port: Service port (optional; defaults to 443 for HTTPS and 80 for HTTP)path: Base path when Druid is exposed through a reverse proxy (optional)tls: Whether to use HTTPS; defaults totrueand only applies todruid://URIstls_ca: Path to a PEM CA certificate used to verify the server
HTTPS/SSL Configuration¶
The druid:// scheme uses HTTPS and the system trust store by default. To
connect to a plaintext Druid endpoint, set tls=false.
Examples:
druid://druid.example.com→ HTTPS on port 443druid://druid.example.com:9088→ HTTPS on port 9088druid://localhost:9088?tls_ca=/path/to/ca.crt→ HTTPS with a custom CAdruid://localhost:8888?tls=false→ HTTP on port 8888https://druid.example.com:9088→ Explicit HTTPS URLhttp://localhost:8888→ Explicit HTTP URL
Reserved characters in credentials must be percent-encoded. For example, @
becomes %40. Credentials can instead be supplied with the ADBC username
and password database options; those options override credentials in the URI
and are recommended when the URI may appear in logs or shell history.
Feature & Type Support¶
| Feature | Apache Druid | |
|---|---|---|
| Bind Parameters | ✅ | |
| Bulk Ingestion | Create | ❌ |
| Append | ❌ | |
| Create/Append | ❌ | |
| Replace | ❌ | |
| Temporary Table | ❌ | |
| Target Catalog | ❌ | |
| Target Schema | ❌ | |
| Non-nullable fields are marked NOT NULL | ❌ | |
| Catalog (GetObjects) | depth=catalogs | ❌ |
| depth=db_schemas | ❌ | |
| depth=tables | ❌ | |
| depth=columns (all) | ❌ | |
| Get Parameter Schema | ❌ | |
| Get Table Schema | ✅ | |
| Prepared Statements | ❌ | |
| Transactions | ❌ | |
Types¶
Database to Arrow¶
| Database Type | Apache Druid |
|---|---|
|
BIGINT |
int64 |
|
BOOLEAN |
bool |
|
DATE |
date32[day] |
|
DOUBLE PRECISION |
double |
|
INT |
int64 |
|
NUMERIC |
double ⚠️ [1] |
|
REAL |
float |
|
SMALLINT |
❌ |
|
TIME |
❌ |
|
TIMESTAMP |
timestamp[ms] |
|
TIMESTAMP WITH TIME ZONE |
❌ |
|
TIMESTAMP(0) |
❌ |
|
TIMESTAMP(0) WITH TIME ZONE |
❌ |
|
TIMESTAMP(p) (1 <= p <= 3) |
timestamp[ms] |
|
TIMESTAMP(p) (1 <= p <= 3) WITH TIME ZONE |
❌ |
|
TIMESTAMP(p) (4 <= p <= 6) |
❌ |
|
TIMESTAMP(p) (4 <= p <= 6) WITH TIME ZONE |
❌ |
|
TIMESTAMP(p) (7 <= p <= 9) |
❌ |
|
TIMESTAMP(p) (7 <= p <= 9) WITH TIME ZONE |
❌ |
|
VARBINARY |
❌ |
|
VARCHAR |
string |
Arrow to Database¶
| Arrow Type | Apache Druid Type |
|---|---|
| Bind | |
|
binary |
❌ |
|
binary_view |
❌ |
|
bool |
BOOLEAN |
|
date32[day] |
DATE ⚠️ [2] |
|
decimal128 |
NUMERIC ⚠️ [1] |
|
double |
DOUBLE PRECISION |
|
fixed_size_binary |
❌ |
|
float |
REAL |
|
halffloat |
REAL |
|
int16 |
SMALLINT |
|
int32 |
INT |
|
int64 |
BIGINT |
|
large_binary |
❌ |
|
large_string |
VARCHAR |
|
string |
VARCHAR |
|
string_view |
VARCHAR |
|
time32[ms] |
❌ |
|
time32[s] |
❌ |
|
time64[ns] |
❌ |
|
time64[us] |
❌ |
|
timestamp[ms] |
TIMESTAMP(3) ⚠️ [3] |
|
timestamp[ms] (with time zone) |
❌ |
|
timestamp[ns] |
❌ |
|
timestamp[ns] (with time zone) |
❌ |
|
timestamp[s] |
❌ |
|
timestamp[s] (with time zone) |
❌ |
|
timestamp[us] |
❌ |
|
timestamp[us] (with time zone) |
❌ |
Options¶
Statement Options¶
druid.statement.<option_name>Type: string, integer, or double.
Sets a Druid SQL query-context parameter. The driver removes the
druid.statement.prefix and sends the remaining option name to Druid. For example,druid.statement.timeoutsets Druid’stimeoutcontext parameter. Byte values are not supported.
Compatibility¶
This driver was tested on:
Apache Druid
37.0.0