Connecter Databricks SQL
Datarelix se connecte à Databricks via un service de requêtes en lecture seule. Les requêtes s’exécutent sur un SQL Warehouse — pas sur un cluster de calcul polyvalent.
Prérequis
- Un espace de travail Databricks avec Unity Catalog activé.
- Un SQL Warehouse (Serverless ou Pro). Les warehouses Classic fonctionnent aussi, mais démarrent plus lentement.
- Un principal de service ou un utilisateur disposant des droits
USE CATALOG,USE SCHEMAetSELECTsur le catalogue et le schéma ciblés.
Trouver vos informations de connexion
Voir Get connection details for a Databricks compute resource pour la procédure officielle. Dans l’interface de l’espace de travail Databricks :
- Allez dans SQL → SQL Warehouses dans la barre latérale gauche.
- Cliquez sur votre warehouse.
- Ouvrez l’onglet Connection details.
- Copiez :
- Server hostname — trois formes selon le cloud :
- AWS :
dbc-12345678-abcd.cloud.databricks.com - Azure :
adb-1234567890123456.7.azuredatabricks.net - GCP :
<workspace-id>.<region>.gcp.databricks.com
- AWS :
- HTTP path — de la forme
/sql/1.0/warehouses/abc123def456.
- Server hostname — trois formes selon le cloud :
Le nom d’hôte correspond au champ Workspace host (hôte de l’espace de travail) et le chemin au champ HTTP path du formulaire de connexion.
Formulaire de connexion
Workspace host: dbc-12345678-abcd.cloud.databricks.comHTTP path: /sql/1.0/warehouses/abc123def456Catalog: mainAllowed schema: defaultAuth mode: one of the three belowModes d’authentification
Jeton d’accès personnel (PAT)
La voie la plus simple. Adaptée à un usage de service, sans intervention humaine. Un PAT est un jeton à longue durée de vie rattaché à un utilisateur ou à un principal de service ; il est stocké chiffré sur la connexion.
Configuration — créer un PAT rattaché à un principal de service
- Dans Databricks, allez dans Settings → Identity and access → Service principals.
- Créez ou choisissez un principal de service.
- Accordez-lui les privilèges Unity Catalog requis via une requête sur le SQL Warehouse :
GRANT USE CATALOG ON CATALOG main TO `your-sp-app-id`;GRANT USE SCHEMA ON SCHEMA main.default TO `your-sp-app-id`;GRANT SELECT ON SCHEMA main.default TO `your-sp-app-id`;
- Générez un jeton d’accès personnel pour ce principal de service : Settings → Identity and access → Service principals → [your SP] → Generate token.
N’utilisez pas votre PAT personnel pour des connexions de service partagées — le jour où vous partez, la connexion casse. Rattachez-le toujours à un principal de service.
Où trouver vos identifiants
- PAT : Settings → Identity and access → Service principals → [your SP] → Tokens (ou User settings → Developer → Access tokens pour les jetons personnels)
À saisir
Workspace host: dbc-12345678-abcd.cloud.databricks.comHTTP path: /sql/1.0/warehouses/abc123def456Catalog: mainAllowed schema: defaultAuth mode: Personal Access TokenToken: dapi••••••••••••••••OAuth M2M (principal de service)
Octroi client credentials OAuth machine-to-machine (M2M). Préférable en production — les jetons sont de courte durée et renouvelés automatiquement. Nécessite un ID client et un secret client, stockés chiffrés sur la connexion.
Configuration
- Dans Databricks, allez dans Settings → Identity and access → Service principals.
- Créez un principal de service si vous n’en avez pas.
- Accordez-lui les privilèges Unity Catalog (le même SQL
GRANTque ci-dessus). - Allez dans [your SP] → Secrets → Generate secret. Copiez le Client ID (l’ID d’application du principal de service) et la Secret value immédiatement — elle n’est affichée qu’une seule fois.
Où trouver vos identifiants
| Champ | Où le trouver |
|---|---|
| Client ID | Settings → Identity and access → Service principals → [your SP] → Application ID |
| Client secret | [your SP] → Secrets → la valeur affichée au moment où vous avez généré le secret |
À saisir
Workspace host: dbc-12345678-abcd.cloud.databricks.comHTTP path: /sql/1.0/warehouses/abc123def456Catalog: mainAllowed schema: defaultAuth mode: OAuth M2MClient ID: your-sp-application-idClient secret: ••••••••JWT fédéré (SSO)
Rattache la connexion à l’utilisateur actuellement connecté. La couche d’exécution émet, à partir de la session de l’utilisateur, un JWT limité à l’espace de travail et l’échange contre un jeton Databricks via la fédération de jetons OAuth de l’espace de travail. Aucun secret à longue durée de vie n’est stocké.
Nécessite :
- Un espace de travail Databricks avec la fédération OIDC configurée auprès de votre fournisseur d’identité.
- Que l’utilisateur connecté dispose de
CAN USEsur le SQL Warehouse.
Ce mode nécessite une fédération configurée avec Datarelix et le responsable de votre fournisseur d’identité. Vérifiez sa disponibilité pour votre compte avant de le sélectionner.
À saisir
Workspace host: dbc-12345678-abcd.cloud.databricks.comHTTP path: /sql/1.0/warehouses/abc123def456Catalog: mainAllowed schema: defaultAuth mode: Federated JWTAucun identifiant à saisir — la connexion utilise automatiquement l’identité de l’utilisateur connecté.
Espace de noms Unity Catalog
Databricks utilise l’espace de noms à trois niveaux d’Unity Catalog : catalog.schema.table.
- Catalog (catalogue) — niveau supérieur de l’espace de noms. La plupart des espaces de travail utilisent
main; les organisations plus grandes le découpent endev,staging,prod, ou par domaine. - Schema (schéma) — deuxième niveau, souvent appelé « database » dans l’interface Spark pour des raisons historiques. Correspond au champ Allowed schema (schéma autorisé) de la connexion.
- Table — la table ou la vue elle-même.
Configurez les schémas autorisés dans le périmètre de la connexion. Des connexions distinctes sont utiles si les identifiants ou le périmètre de reporting diffèrent.
Sémantique de la portée
- Catalog (
mainpar défaut) — niveau supérieur de l’espace de noms. - Allowed schema (
defaultpar défaut) — le schéma auquel la connexion est restreinte. Datarelix bloque toute requête qui référence un schéma hors de la liste autorisée.
Découverte
Entièrement prise en charge sur Unity Catalog. La découverte lit <catalog>.information_schema pour lister les tables, colonnes et clés primaires et étrangères déclarées. Beaucoup de schémas Unity Catalog ne déclarent pas de clés ; l’analyse IA du schéma, facultative, propose alors des relations à partir des conventions de nommage des colonnes.
Unity Catalog est obligatoire. L’ancien catalogue
hive_metastoren’a pas d’information_schema: la découverte n’y renvoie donc rien. Pointez la connexion vers un catalogue Unity Catalog (par ex.main), pas vershive_metastore. Migrez les tables héritées vers Unity Catalog si vous devez les analyser.
Limites
- Unity Catalog uniquement — l’ancien catalogue
hive_metastoren’est pas pris en charge pour la découverte (pas d’information_schema). - SQL Warehouse uniquement — les clusters de calcul polyvalents (notebooks, jobs) ne sont pas pris en charge.
- Lecture seule — Datarelix rejette les instructions d’écriture et DDL avant leur exécution.
- Démarrages à froid — les warehouses Serverless reprennent en ~5 s ; les Pro en ~30 s ; les Classic en 2–5 min. La première requête après une période d’inactivité paie ce coût.
- Limite de lignes — les résultats sont plafonnés à 5 000 lignes.
Dépannage
| Symptôme | Cause probable | Solution |
|---|---|---|
Warehouse is not running | Warehouse arrêté et reprise automatique désactivée | Activez la reprise automatique sur le warehouse, ou démarrez-le manuellement. |
403 PERMISSION_DENIED sur USE CATALOG | Le principal de service n’a pas les droits Unity Catalog | Réexécutez le SQL GRANT USE CATALOG / SCHEMA / SELECT ci-dessus. |
403 INVALID_HTTP_PATH | HTTP path incorrect | Vérifiez dans SQL Warehouses → Connection details ; le chemin commence par /sql/1.0/warehouses/. |
OAuth client not authorized for scope sql | Le principal de service M2M n’a pas la portée sql | Réémettez le secret avec Scopes: all-apis (ou sql explicitement) à la création. |
Token expired (PAT) | Durée de vie du PAT écoulée | Les PAT ont une durée limitée ; renouvelez-le via l’API d’administration Databricks ou les paramètres de jetons du principal de service. |
| La découverte renvoie 0 table | Le catalogue n’a aucune table dans le schéma autorisé | Vérifiez avec SHOW TABLES IN <catalog>.<schema> depuis un éditeur SQL Databricks. |