Remarque
L’accès à cette page requiert une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page requiert 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 Se connecter à des bases de données externes et des catalogues
Pour vous connecter à votre base de données Snowflake à l’aide de Lakehouse Federation, vous devez créer les éléments suivants dans votre metastore Azure Databricks Unity Catalog (les espaces de travail créés après le 9 novembre 2023 disposent déjà d’un metastore Unity Catalog provisionné automatiquement) :
- 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 d’une clé privée PEM. Pour obtenir d’autres méthodes d’authentification, consultez les pages suivantes :
- OAuth intégré à Snowflake
- OAuth avec Microsoft Entra ID
- OAuth avec Okta
- Jeton d’accès OAuth
- 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 pousse la requête Unity Catalog 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.
Avant de commencer
Conditions requises pour l’espace de travail :
- Espace de travail activé pour Unity Catalog. Les espaces de travail créés après le 9 novembre 2023 sont activés automatiquement pour unity Catalog, y compris le provisionnement automatique du metastore. Vous n’avez pas besoin de créer manuellement un metastore, sauf si votre espace de travail précède l’activation automatique et n’a pas été activé pour le catalogue Unity. Consultez Bien démarrer avec 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 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 attaché à l’espace de travail. Dans les espaces de travail activés automatiquement pour le catalogue Unity, les administrateurs de l’espace de travail ont leCREATE CONNECTIONprivilège par défaut. - 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. Dans les espaces de travail activés automatiquement pour le catalogue Unity, les administrateurs de l’espace de travail ont leCREATE CATALOGprivilège par défaut.
Des exigences d’autorisation supplémentaires sont spécifiées dans chaque section basée sur les tâches qui suit.
Créer une connexion
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 votre espace de travail Azure Databricks, cliquez sur
Catalogue.
En haut du volet Catalogue, cliquez sur
, puis sélectionnez Créer une connexion dans le menu.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
PEM Private Keydans 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.com -
Port: par exemple,
443 -
Utilisateur : par exemple,
snowflake-user - Clé privée PEM : clé privée non chiffrée à partir de votre paire de clés RSA, au format PEM. Supprimez les lignes d’en-tête et de pied de page et tous les sauts de ligne, puis entrez la clé en tant que chaîne continue unique.
- (Facultatif) Expire en secondes : délai d’expiration (en secondes) pour la connexion établie avec une clé privée. Si aucune spécification n'est faite, la valeur par défaut est de ne pas avoir d'expiration.
-
hôte : par exemple,
Cliquez sur Suivant.
Dans la page Détails de la connexion , spécifiez les éléments suivants :
-
Entrepôt Snowflake : par exemple,
my-snowflake-warehouse - (Facultatif) Hôte du proxy : l'hôte du proxy utilisé pour se connecter à Snowflake. Vous devez également sélectionner Utiliser le proxy et spécifier le port proxy.
- (Facultatif) Utiliser le proxy : indique s’il faut se connecter à Snowflake à l’aide d’un serveur proxy.
- (Facultatif) Port proxy : port du proxy utilisé pour se connecter à Snowflake. Vous devez également sélectionner Utiliser le proxy et spécifier l’hôte proxy.
- (Facultatif) Rôle Snowflake : rôle de sécurité par défaut à utiliser pour la session après la connexion.
-
Entrepôt Snowflake : par exemple,
Cliquez sur Suivant.
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 principal dans le champ de texte, puis cliquez sur le principal dans les résultats retourné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 principal dans le champ de texte, puis cliquez sur le principal dans les résultats retourné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 SQL Databricks.
CREATE CONNECTION <connection-name> TYPE snowflake
OPTIONS (
host '<hostname>',
port '<port>',
sfWarehouse '<warehouse-name>',
user '<user>',
pem_private_key '<pem-private-key>',
expires_in_secs '<expiration-time-in-seconds>'
);
Databricks recommande d’utiliser secrets au lieu de chaînes en texte clair pour des valeurs sensibles telles que les informations d’identification. Par exemple:
CREATE CONNECTION <connection-name> TYPE snowflake
OPTIONS (
host '<hostname>',
port '<port>',
sfWarehouse '<warehouse-name>',
user secret ('<secret-scope>','<secret-key-user>'),
pem_private_key secret ('<secret-scope>','<secret-key-pem-private-key>'),
expires_in_secs '<expiration-time-in-seconds>'
)
Pour obtenir des informations sur la configuration des secrets, consultez l’article Gestion des secrets.
Options de connexion avancées
Les connexions Snowflake prennent en charge l’option avancée suivante pour les environnements de sortie restreinte ou de connectivité privée :
-
disableOCSPChecks: définissez cette option surtruepour désactiver les vérifications de révocation des certificats OCSP (Online Certificate Status Protocol) dans le pilote JDBC Snowflake. La désactivation des vérifications OCSP omet la vérification de révocation des certificats.
Important
Autorisez le trafic sortant vers le répondeur OCSP Snowflake dans la mesure du possible. Laissez disableOCSPChecks non défini ou définissez-le sur false. Définissez-le true uniquement si votre configuration de connectivité privée ou de sortie restreinte ne peut pas autoriser ce trafic.
Cette option n’est pas affichée dans l’Explorateur de catalogues. Vous pouvez le définir lorsque vous créez la connexion avec SQL :
CREATE CONNECTION <connection-name> TYPE snowflake
OPTIONS (
<connection-options>,
disableOCSPChecks 'true'
);
Pour une connexion existante, utilisez ALTER CONNECTION.
Mettre en forme la clé privée PEM
Vous devez fournir la clé privée PEM non chiffrée en tant que chaîne continue unique :
- Supprimez la première et la dernière ligne du fichier de clé, y compris les lignes de délimitation
BEGIN PRIVATE KEYetEND PRIVATE KEY. Chaque ligne est encadrée par cinq tirets de chaque côté. - Supprimez tous les sauts de ligne afin que la valeur de clé entière soit sur une seule ligne.
Cela s’applique à la fois au champ de clé privée PEM de l’Explorateur de catalogues et à l’option SQL pem_private_key . Pour générer une clé non chiffrée, consultez Limitations.
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 :
- Filters
- Projections
- Limit
- Offset
- Joins
- Agrégats (Average, Corr, CovPopulation, CovSample, Count, Max, Min, StddevPop, StddevSamp, Sum, VariancePop, VarianceSamp)
- Fonctions (fonctions de chaîne, fonctions mathématiques, fonctions date, heure et horodatage et autres fonctions diverses, telles que Alias, Cast, SortOrder)
- Fonctions de fenêtre (DenseRank, Rank, RowNumber)
- Sorting
- Top-N (combinaison du tri et de la limite en une seule opération), prise en charge dans Databricks Runtime 17.3 et versions ultérieures
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 |
|---|---|
decimal, number, numeric |
DecimalType |
bigint, , byteint, intinteger, , smallinttinyint |
IntegerType |
float, float4, float8 |
FloatType |
double, double precision, real |
DoubleType |
char, , character, stringtext, , timevarchar |
StringType |
binary |
BinaryType |
boolean |
BooleanType |
date |
DateType |
datetime, , timestamptimestamp_ltz, , timestamp_ntztimestamp_tz |
TimestampType |
Limitations
Le pilote JDBC Snowflake ne prend pas en charge l’authentification avec des clés privées chiffrées. Pour éviter les erreurs, générez une clé avec
-nocryptl’option ajoutée, comme suit :openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out rsa_key.p8 -nocrypt
Ressources supplémentaires
- Snowflake : Authentification par paire de clés et rotation de paire de clés dans la documentation Snowflake