Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cette page explique comment configurer Lakehouse Federation pour exécuter des requêtes fédérées sur des données Snowflake 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 Snowflake avec Lakehouse Federation, vous devez créer les éléments suivants dans votre metastore Azure Databricks Unity Catalog :
- Une connexion à votre base de données Snowflake.
- Un catalogue étranger qui met en miroir votre base de données Snowflake dans Unity Catalog pour vous puissiez utiliser la syntaxe de requête et les outils de gouvernance des données Unity Catalog, afin de gérer l’accès utilisateur Azure Databricks à la base de données.
Cette page explique comment exécuter des requêtes fédérées sur des données Snowflake à l’aide de l’intégration OAuth intégrée de Snowflake. Pour obtenir d’autres méthodes d’authentification, consultez les pages suivantes :
- OAuth avec l’ID Microsoft Entra
- OAuth avec Okta
- Jeton d’accès OAuth
- Clé privée PEM
- Authentification de base (nom d’utilisateur/mot de passe)
Vous pouvez exécuter des requêtes fédérées sur Snowflake à l’aide de la fédération de requêtes ou de la fédération de catalogue.
Dans la fédération de requête, JDBC envoie (push) la requête catalogue Unity vers le bas vers la base de données externe. Cela est idéal pour les rapports à la demande ou les travaux de preuve de concept sur vos pipelines ETL.
Dans la fédération de catalogue, la requête Catalogue Unity s’exécute directement sur le stockage de fichiers. Cette approche est utile pour la migration incrémentielle sans adaptation du code ou en tant que modèle hybride à long terme pour les organisations qui doivent conserver certaines données dans Snowflake en même temps que leurs données inscrites dans le catalogue Unity. Voir Activer la fédération du catalogue Snowflake.
Fédération des requêtes
Avant de commencer
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 Recommandations de mise en réseau de la Fédération Lakehouse.
- Le calcul Azure Databricks doit utiliser Databricks Runtime 13.3 LTS ou ultérieur et le mode d’accès Standard ou Dédié .
- Les entrepôts SQL doivent être pro ou serverless et doivent utiliser la version 2023.40 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 lié à 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 cette connexion.
D'autres exigences en matière d’autorisation sont spécifiées dans les sections basées sur les tâches ci-dessous.
Créer une intégration de sécurité
Dans la console Snowflake, exécutez CREATE SECURITY INTEGRATION. Remplacez les valeurs suivantes :
<integration-name>: un nom unique pour votre intégration OAuth.<workspace-url>: une URL d'espace de travail Azure Databricks. Vous devez définirOAUTH_REDIRECT_URIsurhttps://<workspace-url>/login/oauth/snowflake.html, où<workspace-url>est l’URL unique de l’espace de travail Azure Databricks où vous créerez la connexion Snowflake.<duration-in-seconds>: une durée pour les jetons d'actualisation.Importante
OAUTH_REFRESH_TOKEN_VALIDITYest un champ personnalisé. Par défaut, il est défini sur 90 jours. Une fois le jeton d’actualisation expiré, vous devez à nouveau authentifier la connexion. Indiquez une valeur raisonnable dans ce champ.
Par exemple :
CREATE SECURITY INTEGRATION <integration-name>
TYPE = oauth
ENABLED = true
OAUTH_CLIENT = custom
OAUTH_CLIENT_TYPE = 'CONFIDENTIAL'
OAUTH_REDIRECT_URI = 'https://<workspace-url>/login/oauth/snowflake.html'
OAUTH_ISSUE_REFRESH_TOKENS = TRUE
OAUTH_REFRESH_TOKEN_VALIDITY = <duration-in-seconds>
OAUTH_ENFORCE_PKCE = TRUE;
Créer une connexion
Une connexion indique 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 bien dans l’éditeur de requête SQL Databricks.
Remarque
Vous pouvez aussi 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 du metastore ou utilisateur disposant du privilège CREATE CONNECTION.
Dans votre espace de travail Azure Databricks, cliquez sur
Catalogue.
En haut du volet Catalogue, cliquez sur l’icône
Ajouter, puis, dans le menu, sélectionnez Ajouter une connexion.Vous pouvez également vous rendre sur la page Accès rapide, cliquer sur le bouton Données externes >, accéder à l’onglet Connexions, puis cliquer sur Créer une connexion.
Dans la page de Informations de base de connexion de l’assistant Configurer la connexion, entrez un Nom de connexion convivial.
Sélectionnez le type de connexion de Snowflake.
Pour le type d’authentification, sélectionnez-le
OAuthdans le menu déroulant.(Facultatif) Ajoutez un commentaire.
Cliquez sur Suivant.
Entrez les informations d’authentification et de connexion suivantes pour votre entrepôt Snowflake.
Hôte : par exemple,
snowflake-demo.east-us-2.azure.snowflakecomputing.comPort : par exemple,
443Utilisateur : par exemple,
snowflake-userID client : dans la console Snowflake, exécutez
SELECT SYSTEM$SHOW_OAUTH_CLIENT_SECRETS('<security-integration-name>')pour récupérer l’ID client pour l’intégration de la sécurité.Clé secrète client : dans la console Snowflake, exécutez
SELECT SYSTEM$SHOW_OAUTH_CLIENT_SECRETS('<security-integration-name>')pour récupérer la clé secrète client pour l’intégration de la sécurité.Étendue OAuth :
refresh_token session:role:<role-name>. Spécifiez le rôle Snowflake à utiliser dans<role-name>.Connectez-vous avec Snowflake : cliquez et connectez-vous à Snowflake à l’aide de vos informations d’identification OAuth.
Une fois la connexion validée, vous êtes redirigé vers l’assistant Configuration de la connexion.
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 constitue un miroir d'une base de données dans un système de données externe. Cela vous permet d'interroger et de gérer l’accès aux données de cette base de données à l’aide d’Azure Databricks et d'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 Octroyer :
- 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.
Identificateurs sensibles à la casse de la base de données
Le champ database du catalogue étranger est mappé à un identificateur de la base de données Snowflake. Si l’identificateur de la base de données Snowflake n’est pas sensible à la casse, celle utilisée dans le catalogue étranger <database-name> est conservée. Toutefois, si l’identificateur de la base de données Snowflake est sensible à la casse, vous devez encapsuler le catalogue étranger <database-name> entre guillemets doubles pour conserver la casse.
Par exemple :
databaseest converti enDATABASE"database"est converti endatabase"database"""est converti endatabase"Pour échapper à un guillemet double, utilisez-en un autre.
"database""entraîne une erreur, car le guillemet double n’est pas correctement échappé.
Pour plus d’informations, consultez Spécifications de l’identificateur dans la documentation Snowflake.
Pushdowns pris en charge
Les pushdowns suivants sont pris en charge :
- Filtres
- Prévisions
- Limite
- Jointures
- Agrégats (Average, Corr, CovPopulation, CovSample, Count, Max, Min, StddevPop, StddevSamp, Sum, VariancePop, VarianceSamp)
- Fonctions (fonctions de chaîne, fonctions mathématiques, données, fonctions Time et Timestamp, et autres fonctions diverses, telles qu'Alias, Cast, SortOrder)
- Fonctions Windows (DenseRank, Rank, RowNumber)
- Tri
Mappages de types de données
Lorsque vous lisez de Snowflake vers Spark, les types de données sont mappés comme suit :
| Type Snowflake | Type Spark |
|---|---|
| décimal, nombre, numérique | DecimalType |
| bigint, byteint, int, integer, smallint, tinyint | IntegerType |
| float, float4, float8 | FloatType |
| double, double précision, réelle | DoubleType |
| char, caractère, chaîne, texte, heure, varchar | StringType |
| binaire | TypeBinaire |
| boolean | Type Booléen |
| date | DateType |
| datetime, timestamp, timestamp_ltz, timestamp_ntz, timestamp_tz | TimestampType |
Limitations de fédération des requêtes
- Le point de terminaison OAuth Snowflake doit être accessible à partir des adresses IP du plan de contrôle Azure Databricks. Consultez les adresses IP sortantes à partir du plan de contrôle Azure Databricks. Snowflake prend en charge la configuration des stratégies réseau au niveau de l’intégration de la sécurité, ce qui permet une stratégie réseau distincte qui permet une connectivité directe du plan de contrôle Azure Databricks au point de terminaison OAuth pour l’autorisation.
- Les options utiliser le proxy, hôte proxy, port du proxy et la configuration des rôles Snowflake ne sont pas prises en charge. Indiquez le rôle Snowflake dans le cadre de l’étendue OAuth.
Ressources supplémentaires
Consultez les articles suivants dans la documentation Snowflake :