Skip to content

Commit 8fcf664

Browse files
committed
feat: Add support for Databricks variant in the system adapter and update related configurations
1 parent 0f0148f commit 8fcf664

5 files changed

Lines changed: 388 additions & 25 deletions

File tree

.github/workflows/run_spicebench.yml

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,14 @@ on:
1717
options:
1818
- spidapter
1919
- databricks
20+
databricks_variant:
21+
description: 'Databricks adapter variant (databricks or lakebase)'
22+
required: false
23+
default: 'databricks'
24+
type: choice
25+
options:
26+
- databricks
27+
- lakebase
2028
etl_bucket:
2129
description: 'S3 bucket for ETL source and target data'
2230
required: true
@@ -117,6 +125,7 @@ jobs:
117125
DATABRICKS_SQL_WAREHOUSE_ID: ${{ secrets.DATABRICKS_SQL_WAREHOUSE_ID }}
118126
DATABRICKS_CATALOG: ${{ secrets.DATABRICKS_CATALOG }}
119127
DATABRICKS_SCHEMA: ${{ secrets.DATABRICKS_SCHEMA }}
128+
DATABRICKS_VARIANT: ${{ github.event.inputs.databricks_variant || 'databricks' }}
120129
DATABRICKS_TABLE_FORMAT: ${{ github.event.inputs.table_format || 'parquet' }}
121130
run: |
122131
set -euo pipefail
@@ -145,6 +154,11 @@ jobs:
145154
;;
146155
147156
databricks)
157+
if [ "${DATABRICKS_VARIANT}" != "databricks" ] && [ "${DATABRICKS_VARIANT}" != "lakebase" ]; then
158+
echo "DATABRICKS_VARIANT must be either 'databricks' or 'lakebase'"
159+
exit 1
160+
fi
161+
148162
for required_var in DATABRICKS_ENDPOINT DATABRICKS_TOKEN DATABRICKS_HTTP_PATH DATABRICKS_SQL_WAREHOUSE_ID; do
149163
if [ -z "${!required_var:-}" ]; then
150164
echo "${required_var} must be set for databricks adapter mode"
@@ -200,6 +214,7 @@ jobs:
200214
DATABRICKS_SQL_WAREHOUSE_ID: ${{ secrets.DATABRICKS_SQL_WAREHOUSE_ID }}
201215
DATABRICKS_CATALOG: ${{ secrets.DATABRICKS_CATALOG }}
202216
DATABRICKS_SCHEMA: ${{ secrets.DATABRICKS_SCHEMA }}
217+
DATABRICKS_VARIANT: ${{ github.event.inputs.databricks_variant || 'databricks' }}
203218
DATABRICKS_TABLE_FORMAT: ${{ github.event.inputs.table_format || 'parquet' }}
204219
SPICEAI_BENCHMARK_METRICS_KEY: ${{ secrets.SPICEAI_BENCHMARK_METRICS_KEY }}
205220
SCENARIO: ${{ github.event.inputs.scenario || 'tpch' }}
@@ -228,7 +243,7 @@ jobs:
228243
if [ "${SYSTEM_ADAPTER}" = "databricks" ]; then
229244
ADAPTER_CMD="${HOME}/.spice/bin/databricks-system-adapter"
230245
ADAPTER_ARGS="stdio"
231-
ADAPTER_ENVS="--system-adapter-env DATABRICKS_ENDPOINT=${DATABRICKS_ENDPOINT} --system-adapter-env DATABRICKS_TOKEN=${DATABRICKS_TOKEN} --system-adapter-env DATABRICKS_HTTP_PATH=${DATABRICKS_HTTP_PATH} --system-adapter-env DATABRICKS_SQL_WAREHOUSE_ID=${DATABRICKS_SQL_WAREHOUSE_ID} --system-adapter-env DATABRICKS_TABLE_FORMAT=${DATABRICKS_TABLE_FORMAT}"
246+
ADAPTER_ENVS="--system-adapter-env DATABRICKS_ENDPOINT=${DATABRICKS_ENDPOINT} --system-adapter-env DATABRICKS_TOKEN=${DATABRICKS_TOKEN} --system-adapter-env DATABRICKS_HTTP_PATH=${DATABRICKS_HTTP_PATH} --system-adapter-env DATABRICKS_SQL_WAREHOUSE_ID=${DATABRICKS_SQL_WAREHOUSE_ID} --system-adapter-env DATABRICKS_VARIANT=${DATABRICKS_VARIANT} --system-adapter-env DATABRICKS_TABLE_FORMAT=${DATABRICKS_TABLE_FORMAT}"
232247
233248
if [ -n "${DATABRICKS_CATALOG}" ]; then
234249
ADAPTER_ENVS="${ADAPTER_ENVS} --system-adapter-env DATABRICKS_CATALOG=${DATABRICKS_CATALOG}"

README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -308,10 +308,14 @@ spicebench \
308308
--system-adapter-env DATABRICKS_TOKEN=$DATABRICKS_TOKEN \
309309
--system-adapter-env DATABRICKS_HTTP_PATH=$DATABRICKS_HTTP_PATH \
310310
--system-adapter-env DATABRICKS_SQL_WAREHOUSE_ID=$DATABRICKS_SQL_WAREHOUSE_ID \
311+
--system-adapter-env DATABRICKS_VARIANT=databricks \
312+
--system-adapter-env DATABRICKS_TABLE_FORMAT=parquet \
311313
--system-adapter-env DATABRICKS_CATALOG=spiceai_sandbox \
312314
--system-adapter-env DATABRICKS_SCHEMA=tpch
313315
```
314316

317+
Set `DATABRICKS_VARIANT=lakebase` to enable Lakebase setup mode, which creates schema/table DDL during `setup()` and drops tables during `teardown()` when `DATABRICKS_DROP_TABLES_ON_TEARDOWN=true`.
318+
315319
### Crate Overview
316320

317321
| Crate | Description |

system-adapters/databricks/Cargo.lock

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

system-adapters/databricks/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ repository = "https://github.com/spiceai/spicebench"
99

1010
[dependencies]
1111
anyhow = "1.0.99"
12+
arrow-schema = "57.0.0"
1213
async-trait = "0.1.89"
1314
clap = { version = "4.5.54", features = ["derive", "env"] }
1415
reqwest = { version = "=0.12.24", default-features = false, features = ["json", "rustls-tls"] }

0 commit comments

Comments
 (0)