Exécuter des query fédérées sur Teradata
Cette page décrit comment configurer Lakehouse Federation pour exécuter des requêtes fédérées sur des données Teradata qui ne sont pas gérées par Databricks. Pour en savoir plus sur Lakehouse Federation, consultez Connecter aux bases de données et catalogues externes
Pour vous connecter à votre base de données Teradata à l'aide de Lakehouse Federation, vous devez créer les éléments suivants dans votre métastore Unity Catalog de Databricks (les workspaces créés après le 8 novembre 2023 disposent déjà d'un métastore Unity Catalog provisionné automatiquement) :
- Une connexion à votre base de données Teradata.
- Un *catalogue externe* qui reflète votre base de données Teradata dans Unity Catalog afin que vous puissiez utiliser la syntaxe de query de Unity Catalog et les outils de gouvernance des données pour gérer l'accès des utilisateurs de Databricks à la base de données.
Avant de commencer
Avant de commencer, assurez-vous de remplir les conditions de cette section.
Exigences Databricks
Exigences du Workspace :
- Workspace activé pour Unity Catalog. Les Workspace créés après le 8 novembre 2023 sont automatiquement activés pour Unity Catalog, y compris le provisionnement automatique du métastore. Vous n'avez pas besoin de créer manuellement un métastore, à moins que votre workspace ne soit antérieur à l'activation automatique et n'ait pas été activé pour Unity Catalog. Voir Se familiariser avec Unity Catalog.
Compute requis :
- Connectivité réseau de votre ressource de compute vers les systèmes de bases de données cibles. Consultez les recommandations de mise en réseau pour Lakehouse Federation.
- Le compute Databricks doit utiliser Databricks Runtime 16.1 ou une version ultérieure et le mode d'accès Standard ou Dédié .
- Les SQL Warehouse doivent être pro ou Serverless et utiliser la version 2024.50 ou ultérieure.
Autorisations requises :
- Pour créer une connexion, vous devez être administrateur de métastore ou un utilisateur disposant du privilège
CREATE CONNECTIONsur le métastore Unity Catalog attaché à l'espace de travail. Dans les espaces de travail qui ont été activés automatiquement pour Unity Catalog, les administrateurs d'espace de travail disposent du privilègeCREATE CONNECTIONpar default. - Pour créer un catalogue externe, vous devez disposer de l'autorisation
CREATE CATALOGsur le metastore et être le propriétaire de la connexion ou disposer du privilègeCREATE FOREIGN CATALOGsur la connexion. Dans les workspaces activés automatiquement pour Unity Catalog, les administrateurs du workspace disposent du privilègeCREATE CATALOGpar default.
Des exigences d'autorisation supplémentaires sont spécifiées dans chaque section basée sur les tâches qui suit.
Authentification Teradata
Les connexions Teradata dans Databricks Lakehouse Federation ne prennent en charge que le mécanisme d'authentification TD2 (l'authentification default de Teradata). TD2 authentifie les utilisateurs avec un nom d'utilisateur et un mot de passe gérés par la base de données Teradata.
Les autres mécanismes d'authentification Teradata, tels que LDAP, Kerberos et TDNEGO, ne sont pas pris en charge.
Teradata TLS
- Vous pouvez choisir entre les modes
require,prefer,verify-ca,verify-full,disablepour SSL. Le modeprefers'appuie sur le serveur pour activer le chiffrement (le numéro de port peut être configuré). Si vous utilisez TLS, n'importe quelle option suffira (le port sera 443) (verify-caetverify-fullrenforcent la sécurité de la connexion, mais nécessitent plus de configuration côté serveur). Databricks recommande d'accepter SSL. Si votre serveur n'accepte pas SSL, utilisez le modedisable; tenter d'utiliserrequirepour SSL alors qu'il n'est pas pris en charge entraîne une surcharge de performance. Pour plus d'informations, veuillez consulter Comment sécuriser les connexions à l'aide de TLS dans la documentation Teradata.
Créer une connexion Databricks
Une connexion spécifie un chemin d'accès et des identifiants pour accéder à un système de base de données externe. Pour créer une connexion, vous pouvez utiliser Catalog Explorer ou la commande SQL CREATE CONNECTION dans un Notebook Databricks ou l'éditeur de query Databricks SQL.
Vous pouvez également utiliser l'API REST Databricks ou la CLI Databricks pour créer une connexion. Voir POST /api/2.1/unity-catalog/connections et les commandes Unity Catalog.
Autorisations requises : administrateur du Metastore ou utilisateur disposant du privilège CREATE CONNECTION.
- Catalog Explorer
- SQL
-
Dans votre workspace Databricks, cliquez sur
Catalogue .
-
En haut du volet **Catalogue**, cliquez sur
l'icône **Ajouter** et sélectionnez **Créer une connexion** dans le menu.
-
Sur la page **Principes de base de la connexion** de l’assistant **Configurer la connexion**, saisissez un **Nom de connexion** convivial.
-
Sélectionnez un **type de connexion** de **Teradata**.
-
Ajouter un commentaire (facultatif).
-
Cliquez sur Suivant .
-
Sur la page **Authentification**, saisissez les propriétés de connexion suivantes pour l'instance Teradata :
- Hôte : Par exemple,
teradata-demo.teradata.com - Port : par exemple,
1025 - Utilisateur : Par exemple,
teradata_user - Mot de passe : Par exemple,
password123 - **Mode Ssl**
require``prefer``verify-ca``verify-full:,,,,disable
- Hôte : Par exemple,
-
Cliquez sur Créer une connexion .
-
Sur la page **Bases du catalogue**, veuillez saisir un nom pour le catalogue étranger. Un catalogue étranger reflète une base de données dans un système de données externe afin que vous puissiez query et gérer l'accès aux données de cette base de données à l'aide de Databricks et de Unity Catalog.
-
(Facultatif) Cliquez sur **Tester la connexion** pour confirmer que cela fonctionne.
-
Cliquez sur **Créer un catalogue**.
-
Sur la page Accès , sélectionnez les workspaces dans lesquels les utilisateurs peuvent accéder au catalogue que vous avez créé. Vous pouvez sélectionner Tous les workspaces ont accès , ou cliquer sur Attribuer aux workspaces , sélectionner les workspaces, puis cliquer sur Attribuer .
-
Modifiez le propriétaire qui pourra gérer l'accès à tous les objets du catalogue. start à taper un principal dans la zone de texte, puis cliquez sur le principal dans les résultats renvoyés.
-
Accordez les **Privilèges** sur le catalogue. Cliquez sur Accorder :
-
Spécifiez les **principals** qui auront accès aux objets dans le catalogue. start à taper un principal dans la zone de texte, puis cliquez sur le principal dans les résultats renvoyés.
-
Sélectionnez les **Préréglages de privilèges** à accorder à chaque principal. Tous les utilisateurs du compte se voient accorder
BROWSEpar default.- Sélectionnez Data Reader dans le menu déroulant pour accorder
readprivilèges sur les objets du catalogue. - Sélectionnez **Data Editor** dans le menu déroulant pour accorder
readlesmodifyprivilèges et sur les objets du catalogue. - Sélectionnez manuellement les privilèges à accorder.
- Sélectionnez Data Reader dans le menu déroulant pour accorder
-
Cliquez sur Accorder .
-
-
Cliquez sur Suivant .
-
Sur la page Métadonnées , spécifiez les paires clé-valeur de balises. Pour plus d'informations, consultez Appliquer des balises aux objets sécurisables d'Unity Catalog.
-
Ajouter un commentaire (facultatif).
-
Cliquez sur Enregistrer .
Exécutez la commande suivante dans un Notebook ou l’éditeur de query Databricks SQL :
CREATE CONNECTION <connection-name> TYPE teradata
OPTIONS (
host '<hostname>',
port '<port>',
user '<user>',
password '<password>',
ssl_mode '<ssl_mode>' -- optional
);
Databricks vous recommande d'utiliser les secrets Databricks au lieu de chaînes de texte brut pour les valeurs sensibles comme les identifiants. Par exemple :
CREATE CONNECTION <connection-name> TYPE teradata
OPTIONS (
host '<hostname>',
port '<port>',
user secret ('<secret-scope>','<secret-key-user>'),
password secret ('<secret-scope>','<secret-key-password>'),
ssl_mode '<ssl_mode>' -- optional
)
Si vous devez utiliser des chaînes de texte brut dans les commandes SQL du notebook, évitez de tronquer la chaîne en échappant les caractères spéciaux comme $ avec \. Par exemple : \$.
Pour en savoir plus sur la configuration des secrets, consultez la gestion des secrets.
Créer un catalogue étranger
Si vous utilisez l’interface utilisateur pour créer une connexion à la source de données, la création du catalogue externe est incluse et vous pouvez ignorer cette étape.
Un catalogue étranger reflète une base de données dans un système de données externe afin que vous puissiez query et gérer l'accès aux données dans cette base de données à l'aide de Databricks et d'Unity Catalog. Pour créer un catalogue étranger, vous utilisez une connexion à la source de données qui a déjà été définie.
Pour créer un catalogue externe, vous pouvez utiliser l'Explorateur de catalogues ou la commande SQL CREATE FOREIGN CATALOG dans un Notebook Databricks ou l'éditeur de query SQL. Vous pouvez également utiliser l'API REST Databricks ou la CLI Databricks pour créer un catalogue. Voir POST /api/2.1/unity-catalog/catalogs et commandes Unity Catalog.
Autorisations requises : autorisation CREATE CATALOG sur le metastore et soit la propriété de la connexion, soit le privilège CREATE FOREIGN CATALOG sur la connexion.
- Catalog Explorer
- SQL
-
Dans votre Workspace Databricks, cliquez sur
**Catalogue** pour ouvrir l’Explorateur de catalogues.
-
En haut du volet Catalogue , cliquez sur l'icône
Ajouter et sélectionnez Ajouter un catalogue dans le menu.
Autrement, depuis la page Quick access , cliquez sur le bouton Catalogs , puis cliquez sur le bouton Create catalog .
-
Suivez les instructions pour créer des catalogues étrangers dans Créer des catalogues.
Exécutez la commande SQL suivante dans un Notebook ou un éditeur de query SQL. Les éléments entre parenthèses sont facultatifs. Remplacez les valeurs d'espace réservé :
<catalog-name>: Nom du catalogue dans Databricks.<connection-name>: L'objet de connexion qui spécifie la source de données, le chemin d'accès et les informations d'identification d'accès.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>;
Conformité ANSI
Le connecteur Teradata utilise TMODE=ANSI default pour toutes les sessions à partir de Databricks Runtime 17.1. Ce paramètre aligne le comportement des comparaisons de chaînes et des Opérations numériques avec le dialecte ANSI SQL que Databricks utilise par default. En mode ANSI, les comparaisons de chaînes sont sensibles à la casse, tandis qu'en mode hérité TERA de Teradata, elles sont insensibles à la casse (par exemple, 'ABC' = 'abc' est évalué comme vrai). Le comportement hérité pourrait produire des résultats inattendus lorsque vous interrogez Teradata à partir de compute Databricks compatible ANSI.
Si vous passez à Databricks Runtime 17.1 ou version ultérieure, Databricks SQL ou Serverless compute, le mode de session default passe de TERA à ANSI. Cela pourrait affecter les résultats de la query, en particulier pour les vues Teradata qui reposent sur une correspondance de chaîne insensible à la casse. Par exemple, une vue avec un filtre comme WHERE status = 'Active' pourrait renvoyer des résultats différents si les données sous-jacentes contiennent 'ACTIVE' ou 'active' parce que le mode ANSI les traite comme des valeurs différentes.
Pushdowns pris en charge
Le tableau suivant répertorie les opérations pushdown prises en charge pour Teradata, ainsi que le compute requis pour chacune.
Pushdown | Prise en charge du compute |
|---|---|
Agrégats |
|
Opérateurs arithmétiques |
|
Opérateurs bit à bit |
|
Opérateurs booléens |
|
Contains, Startswith, Endswith, Like |
|
Filtres |
|
Limite |
|
Fonctions mathématiques |
|
Fonctions diverses |
|
Projections |
|
Tri, lorsqu'il est utilisé avec une limite |
|
Fonctions de chaîne |
|
Fonctions de chaîne |
|
Fonctions de chaîne |
|
Jointures |
|
Fonctions de fenêtre |
|
Mappages des types de données
Lorsque vous lisez de Teradata vers Spark, les types de données correspondent comme suit :
Type Teradata | Type Spark |
|---|---|
|
|
|
|
|
|
|
|
|
|
| Non pris en charge |
|
|
|
|