Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de changer d’annuaire.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer d’annuaire.
Cette page explique comment configurer Lakehouse Federation pour exécuter des requêtes fédérées sur des données Oracle qui ne sont pas gérées par Azure Databricks. Pour en savoir plus sur lakehouse Federation, consultez Qu’est-ce que la Fédération Lakehouse ?
Pour vous connecter à votre base de données Oracle à l’aide de Lakehouse Federation, vous devez créer les éléments suivants dans votre metastore du catalogue Azure Databricks Unity.
- Connexion à votre base de données Oracle.
- Catalogue étranger qui met en miroir votre base de données Oracle dans le catalogue Unity afin de pouvoir utiliser la syntaxe de requête du catalogue Unity et les outils de gouvernance des données pour gérer l’accès utilisateur Azure Databricks à la base de données.
Limitations
Lakehouse Federation prend uniquement en charge les connexions TLS (Transport Layer Security) à Oracle Cloud. Les connexions à d’autres bases de données Oracle utilisent le chiffrement réseau natif (NNE).
Il existe un problème connu lors de la connexion aux instances 11.2.0.3.0 et ultérieures qui n’ont pas de valeur de
Etc/UTCfuseau horaire (Erreur :ORA-01882: timezone region not found).- Solution de contournement : utilisez la configuration
spark.databricks.connector.oracle.timezoneAsRegion, qui correspond directement à la propriété de pilote JDBCoracle.jdbc.timezoneAsRegion. - Avertissement : la solution de contournement peut entraîner un comportement incorrect de l’heure d’été (DST). Pour obtenir de l’aide, contactez le support Oracle.
- Solution de contournement : utilisez la configuration
License
Le pilote Oracle et les autres JAR Oracle nécessaires sont régis par la licence FDHUT non acceptable en un clic.
Avant de commencer
Avant de commencer, vérifiez que vous répondez aux exigences de cette section.
Exigences de Databricks
Conditions requises pour l’espace de travail :
- Espace de travail activé pour Unity Catalog.
Voici les exigences de calcul à respecter :
- Connectivité réseau de votre ressource de calcul aux systèmes de base de données cibles. Consultez l’article Recommandations de mise en réseau pour Lakehouse Federation.
- Le calcul Azure Databricks doit utiliser Databricks Runtime 16.1 ou version ultérieure et le mode d’accès Standard ou Dédié .
- Les entrepôts SQL doivent être pro ou serverless et doivent utiliser la version 2024.50 ou ultérieure.
Autorisations requises :
- Pour créer une connexion, vous devez être un administrateur de metastore ou un utilisateur disposant du privilège
CREATE CONNECTIONsur le metastore Unity Catalog attaché à l’espace de travail. - Pour créer un catalogue étranger, 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.
Des exigences d’autorisation supplémentaires sont spécifiées dans chaque section basée sur les tâches qui suit.
Conditions requises pour Oracle
Pour les connexions qui utilisent le chiffrement réseau natif, vous devez activer NNE côté serveur (ACCEPTED niveau au minimum). Consultez la documentation Oracle sur la configuration du chiffrement des données réseau . Cela ne s’applique pas aux connexions Oracle Cloud, qui utilisent plutôt TLS.
Créer une connexion Azure Databricks
Une connexion spécifie un chemin d’accès et des informations d’identification pour accéder à un système de base de données externe. Pour créer une connexion, vous pouvez utiliser l’Explorateur de catalogues ou la commande SQL CREATE CONNECTION dans un notebook Azure Databricks ou l’éditeur de requête SQL Databricks.
Note
Vous pouvez également utiliser l’API REST Databricks ou l’interface CLI Databricks pour créer une connexion. Consultez POST /api/2.1/unity-catalog/connections et Commandes Unity Catalog.
Autorisations requises : administrateur de metastore ou utilisateur disposant du privilège CREATE CONNECTION.
Explorateur de catalogues
- Dans l’espace de travail Azure Databricks, cliquez sur
Catalogue.
- Dans le volet gauche, développez le menu Données externes et sélectionnez Connexions.
- Cliquez sur Create connection (Créer la connexion).
- Dans la page de Informations de base de connexion de l’assistant Configurer la connexion, entrez un Nom de connexion convivial.
- Sélectionnez un type de connexion d’Oracle.
- (Facultatif) Ajoutez un commentaire.
- Cliquez sur Suivant.
- Dans la page Authentification , entrez les éléments suivants pour l’instance Oracle :
-
hôte : par exemple,
oracle-demo.123456.rds.amazonaws.com -
Port: par exemple,
1521 -
Utilisateur : par exemple,
oracle_user -
Mot de passe : par exemple,
password123 -
Protocole de chiffrement :
Native Network Encryption(par défaut) ouTransport Layer Security
-
hôte : par exemple,
- Cliquez sur Create connection (Créer la connexion).
- Sur la pageConcepts de base du catalogue, saisissez 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 interroger et gérer l’accès aux données de cette base de données à l’aide d’Azure Databricks et Unity Catalog.
- (Facultatif) Cliquez sur Tester la connexion pour vérifier qu’elle fonctionne.
- Cliquez sur Créer un catalogue.
- Dans la page Access, sélectionnez les espaces de travail dans lesquels les utilisateurs peuvent accéder au catalogue que vous avez créé. Vous pouvez sélectionner Tous les espaces de travail ont accès, ou cliquer sur Affecter aux espaces de travail, sélectionner les espaces de travail, puis cliquer sur Attribuer.
- Changez le propriétaire qui pourra gérer l'accès à tous les objets du catalogue. Commencez à taper un responsable dans la zone de texte, puis cliquez sur le responsable dans les résultats affichés.
- Accordez des privilèges sur le catalogue. Cliquez sur Accorder :
- Spécifiez les Principaux qui auront accès aux objets du catalogue. Commencez à taper un responsable dans la zone de texte, puis cliquez sur le responsable dans les résultats affichés.
- Sélectionnez les Préréglages de privilège à accorder pour chaque principal. Tous les utilisateurs d'un compte reçoivent
BROWSEpar défaut.- Sélectionnez Lecteur de données dans le menu déroulant pour accorder des privilèges
readaux les objets du catalogue. - Sélectionnez Éditeur de données dans le menu déroulant pour accorder
readetmodifyprivilèges sur les objets du catalogue. - Sélectionnez manuellement les privilèges à accorder.
- Sélectionnez Lecteur de données dans le menu déroulant pour accorder des privilèges
- Cliquez sur Accorder.
- Cliquez sur Suivant.
- Sur la page Métadonnées, indiquez des paires clé-valeur pour les balises. Pour plus d’informations, consultez Appliquer des étiquettes aux objets sécurisables du catalogue Unity.
- (Facultatif) Ajoutez un commentaire.
- Cliquez sur Enregistrer.
SQL
Exécutez la commande suivante dans un notebook ou dans l’éditeur de requête Databricks SQL :
CREATE CONNECTION <connection-name> TYPE oracle
OPTIONS (
host '<hostname>',
port '<port>',
user '<user>',
password '<password>',
encryption_protocol '<protocol>' -- optional
);
Databricks vous recommande d’utiliser azure Databricks secrets au lieu de chaînes en texte clair pour les valeurs sensibles telles que les informations d’identification. Par exemple:
CREATE CONNECTION <connection-name> TYPE oracle
OPTIONS (
host '<hostname>',
port '<port>',
user secret ('<secret-scope>','<secret-key-user>'),
password secret ('<secret-scope>','<secret-key-password>'),
encryption_protocol '<protocol>' -- optional
)
Si vous devez utiliser des chaînes de texte en clair dans les commandes SQL du bloc-notes, évitez de tronquer la chaîne en échappant les caractères spéciaux comme $ avec \. Par exemple : \$.
Pour obtenir des informations sur la configuration des secrets, consultez l’article Gestion des secrets.
Créer un catalogue étranger
Note
Si vous utilisez l’interface utilisateur pour créer une connexion à la source de données, la création du catalogue étranger 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 interroger et gérer l’accès aux données de cette base de données à l’aide d’Azure Databricks et 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 étranger, vous pouvez utiliser l’Explorateur de catalogues ou la commande CREATE FOREIGN CATALOG SQL dans un notebook Azure Databricks ou l’éditeur de requête SQL. Vous pouvez également utiliser l’API REST Databricks ou l’interface CLI Databricks pour créer un catalogue. Consultez POST /api/2.1/unity-catalog/catalogs et les commandes du catalogue Unity.
Autorisations requises : autorisation CREATE CATALOG sur le metastore, et être propriétaire de la connexion ou disposer du privilège CREATE FOREIGN CATALOG sur la connexion.
Explorateur de catalogues
Dans l’espace de travail Azure Databricks, cliquez sur
Catalogue pour ouvrir l’Explorateur de catalogues.
En haut du volet Catalogue, cliquez sur l’icône
Ajouter, puis, dans le menu, sélectionnez Ajouter un catalogue.Vous pouvez également accéder à Accès rapide. Cliquez ensuite sur le bouton Catalogues, puis sur Créer un catalogue.
Suivez les instructions pour créer des catalogues étrangers dans Créer des catalogues.
SQL
Exécutez la commande SQL suivante dans un notebook ou dans l’éditeur de requêtes SQL. Les éléments entre crochets sont facultatifs. Remplacez les valeurs d’espace réservé :
-
<catalog-name>: nom du catalogue dans Azure Databricks. -
<connection-name>: L'objet Connection qui indique la source de données, le chemin et les informations d’identification d’accès. -
<service-name>: Nom du service que vous souhaitez mettre en miroir en tant que catalogue dans Azure Databricks.
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
OPTIONS (service_name '<service-name>');
Pushdowns pris en charge
Les pushdowns suivants sont pris en charge :
- Filters
- Projections
- Limit
- Aggregates
- Offset
- Cast
- Contient, Commence par, Se termine par
Mappages de types de données
Lorsque vous lisez depuis Oracle vers Spark, les types de données sont mappés comme suit :
| Type Oracle | Type Spark |
|---|---|
| Horodatage avec TIMEZONE, Horodatage avec local TIMEZONE | TimestampType |
| DATE, TIMESTAMP | TimestampType/TimestampNTZType* |
| NOMBRE, FLOAT | DecimalType** |
| FLOAT BINAIRE | FloatType |
| DOUBLE BINAIRE | DoubleType |
| CHAR, NCHAR, VARCHAR2, NVARCHAR2 | StringType |
* DATE et TIMESTAMP sont mappés à Spark TimestampType si spark.sql.timestampType = TIMESTAMP_LTZ (valeur par défaut). Ils sont mappés à TimestampNTZType si spark.sql.timestampType = TIMESTAMP_NTZ.
** NOMBRE sans spécification de précision sera mappé à DecimalType(38, 10), car il n’existe aucune prise en charge d’une décimale à virgule flottante pure dans Spark.