dbt™ and Starburst and Trino on Paradime: Fast Connection and Faster Validation
Feb 26, 2026
How to Connect dbt™ to Starburst and Trino Using Paradime
Setting up dbt™ with Starburst or Trino shouldn't feel like deciphering a flight manual. Yet the combination of catalogs, schemas, session properties, and authentication methods trips up even experienced analytics engineers.
This guide walks you through every step of connecting dbt™ to Starburst or Trino inside Paradime — from prerequisites to production scheduling — with validation queries you can run in under a minute.
What This Guide Covers
How Paradime Simplifies dbt™ + Trino/Starburst Setup
With dbt Core™, connecting to Starburst or Trino means manually configuring profiles.yml, managing credentials in local files, and context-switching between your terminal and query editor. Paradime collapses that workflow into a single platform: a browser-based Code IDE for development, a Bolt Scheduler for production runs, and a SQL Scratchpad for instant validation — all sharing the same secure credential store.
Figure 1: Paradime connects your Starburst/Trino cluster to three work surfaces — development, production, and ad-hoc validation — through a single managed connection.
How to Validate Your Connection Immediately
Before you build a single dbt™ model, run a quick sanity check in Paradime's SQL Scratchpad:
If you see a list of catalogs come back, your connection is live. We'll expand on this in the validation section below.
Prerequisites for Starburst/Trino
Before you touch Paradime's settings page, gather the following from your Starburst or Trino administrator.
Host/Port and HTTP Path (If Relevant)
Parameter | Description | Example |
|---|---|---|
Host | The hostname of your cluster. Do not include the |
|
Port | The port your cluster listens on. Defaults to |
|
For Starburst Galaxy, your host typically follows the pattern -.trino.galaxy.starburst.io. For Starburst Enterprise or open-source Trino, use the hostname your admin provides.
Auth Method (Basic/LDAP/OAuth/JWT) and TLS Certs
Paradime's Trino connector supports multiple authentication methods:
LDAP — Username and password authentication via LDAP. Most common for Starburst Enterprise.
JWT — Token-based authentication. Common when clusters are behind a gateway or service mesh.
OAuth Console — Browser-based OAuth flow. Preferred in Starburst Galaxy.
If your cluster enforces TLS (it should), confirm that your port is correct (typically 443) and that the http_scheme is set to https. If your organization uses self-signed certificates, work with your admin to ensure the certificate chain is trusted by Paradime's infrastructure. See Paradime IP Restrictions to whitelist the correct egress IPs.
Catalog and Schema Selection
This is where Starburst/Trino terminology diverges from traditional databases. Let's clarify:
Figure 2: In Trino, a catalog is a named connection to a data source (like a Hive metastore or Iceberg lake). A schema is a logical grouping of tables within that catalog. The fully qualified address of any table is catalog.schema.table.
Think of catalogs like databases in Snowflake or BigQuery projects — except each catalog can connect to an entirely different storage backend (S3 via Hive, PostgreSQL, MySQL, etc.). When you select a catalog and schema in Paradime, you're telling dbt™ where to read source data from and where to materialize models.
Key rule: The user account you authenticate with must have read and write access to the target catalog and schema. dbt™ needs to create tables and views there.
Create a Starburst Connection in Paradime
Settings → Connections
Click Settings in the Paradime top menu bar.
In the left sidebar, click Connections.
Click Add New next to the Code IDE section.
Select Trino from the warehouse list.
Connection Fields Explained (Catalog/Schema/Role/Session Properties)
You'll see a profile configuration field accepting YAML. Here's a complete example for LDAP authentication:
A breakdown of every field:
Field | Required | Description |
|---|---|---|
| ✅ | Always |
| ✅ | Authentication method: |
| ✅ | Your username. For Starburst Galaxy, append the role: |
| ✅ (LDAP) | Password for LDAP auth. Use environment variables for safety. |
| ✅ | Cluster hostname — no protocol prefix. |
| ✅ | The Trino catalog your models target (maps to |
| ✅ | The default schema for materialized models. |
| ✅ | Typically |
| ❌ | Number of concurrent model runs. Default: |
| ❌ | Catalog-specific role assignments, e.g., |
| ❌ | Custom Trino session settings (e.g., |
| ❌ |
|
For JWT authentication, replace user/password with:
Enter a dbt™ Profile Name that matches the
profile:key in yourdbt_project.yml.Set the Target field to
dev.Adjust the Schema and Threads fields as needed.
Secure Credential Storage
Never paste raw passwords into configuration fields. Paradime stores all credentials in HashiCorp Vault, encrypted at rest and in transit. Each developer's profiles.yml is isolated in a dedicated file-system folder that no other user can access.
For an extra layer of safety, reference secrets via environment variables:
Set TRINO_PASSWORD under Settings → Workspaces → Environment Variables → Code IDE.
Configure the Code IDE Target (Development)
Dev Schema Strategy
In development, you want every engineer to write to their own isolated schema so models don't collide. The standard dbt™ pattern is to use a custom generate_schema_name macro. Create macros/get_custom_schema.sql:
With this macro in place and your Code IDE target set to dev with schema: dbt_john:
Environment | Custom Schema Config | Resulting Schema |
|---|---|---|
Dev (John) |
|
|
Dev (Jane) |
|
|
Prod |
|
|
This isolation means John and Jane can dbt run simultaneously without overwriting each other's tables.
Working with Multiple Catalogs
Trino's superpower is query federation — querying across catalogs backed by entirely different storage systems. In dbt™, the catalog field in your connection maps to target.database. To materialize models in a different catalog, use the database config:
For more advanced routing, override the generate_database_name macro in your project:
This lets you read from a raw_postgres catalog and write to an analytics_lakehouse catalog — all within one dbt™ project and one Paradime connection.
Figure 3: A single dbt™ project reading from one catalog and materializing into another via Trino federation.
Configure Bolt Scheduler (Production)
Prod Schema + Permissions
Bolt is Paradime's production orchestrator. It uses a separate connection from the Code IDE, ensuring production runs are never affected by development configuration changes.
Navigate to Settings → Connections.
Click Add New next to the Bolt Schedules section.
Select Trino and provide production credentials.
Your production profile should target clean schema names (no developer prefix):
Set the Target field to prod. This works in tandem with the generate_schema_name macro shown earlier — when target.name == 'prod', models materialize to their clean, intended schema names.
Permissions tip: The production service account (
svc_dbt_prod) should have CREATE, INSERT, SELECT, and DROP privileges on the target catalog and schema. In Starburst Enterprise, assign these via built-in access control (BIAC). In Starburst Galaxy, use the role system.
Schedule Safety: Separate Credentials and Targets
Figure 4: Paradime enforces environment isolation by maintaining separate connection configurations for dev, prod, and CI.
This separation ensures:
A developer can't accidentally run a production build — the Code IDE physically cannot use production credentials.
Production credentials are never exposed to individual developers — only the Bolt Scheduler accesses them.
CI runs (TurboCI) use a third, dedicated connection writing to a disposable schema like
dbt_ci.
To create a Bolt schedule:
Open the Bolt application from the Paradime Home Screen.
Click + New Schedule → + Create New Schedule.
Configure the schedule name, commands (e.g.,
dbt build), git branch (main), trigger type, and cron expression.Save and publish.
See Creating Bolt Schedules for the full walkthrough.
Paradime Exclusive: Validate in SQL Scratchpad
Paradime's SQL Scratchpad is a gitignored, persistent workspace inside the Code IDE. Use it to verify your connection is healthy before running any dbt™ commands.
SHOW CATALOGS / SHOW SCHEMAS Sanity Checks
Open a Scratchpad tab and run:
Expected output:
Then confirm your target schema exists:
Expected output:
If your catalog or schema is missing from these results, stop here — dbt™ will fail with the same error downstream. Fix permissions or names before proceeding.
Run a Lightweight Query Against a Known Table
Pick a table you know exists and run a bounded query:
If this returns rows, your authentication, catalog, schema, and read permissions are all confirmed. You're ready to dbt run.
Figure 5: A three-step validation flow you can run in SQL Scratchpad before ever touching dbt™.
Common Issues and Fixes
Catalog Not Found / Schema Not Found
Symptom:
or
Causes and fixes:
Cause | Fix |
|---|---|
Typo in | Run |
Catalog not mounted on your cluster | Ask your Starburst admin to verify the catalog is configured in the cluster's catalog properties. |
Insufficient permissions | Your user may be able to authenticate but lack |
Schema doesn't exist yet | dbt™ can auto-create schemas it materializes into, but your user needs |
Auth Failures
Symptom:
or
Causes and fixes:
Cause | Fix |
|---|---|
Wrong | Double-check |
Incorrect username format | For Starburst Galaxy, the username must include the role suffix: |
Password or token expired | Rotate credentials and update the environment variable in Settings → Environment Variables. |
SSL certificate not trusted | Ensure |
Paradime IP not whitelisted | Your firewall must allow inbound connections from Paradime's egress IPs. |
Session Property Mismatches
Symptom:
or
Causes and fixes:
Cause | Fix |
|---|---|
Property name doesn't exist in your Trino version | Session property names change between Trino versions. Verify available properties by running |
Property scoped to a specific catalog connector | Some properties are catalog-scoped (e.g., |
Invalid value type | A property expecting a duration (e.g., |
You can also set session properties on a per-model basis using dbt™ hooks instead of globally in profiles.yml:
This is safer because a misconfigured global session property will break every model, while a per-model hook limits the blast radius.
Wrapping Up
Connecting dbt™ to Starburst or Trino in Paradime comes down to three things: getting the right credentials from your admin, entering them in the right place, and validating before you build. The SHOW CATALOGS → SHOW SCHEMAS → SELECT LIMIT 5 pattern gives you confidence in under a minute.
If something goes wrong, the fix is almost always in the catalog name, the auth method, or the permissions — and you can diagnose all three from SQL Scratchpad without leaving Paradime.
Useful resources:


