Activer la fédération de catalogue Snowflake
Cet article explique comment activer la fédération Snowflake à l'aide de la fédération de catalogues. La fédération de catalogues permet à Unity Catalog de lire les tables Iceberg gérées par Snowflake directement depuis le stockage cloud, offrant de meilleures performances et une meilleure rentabilité par rapport à la fédération de query.
Avec la fédération de catalogues, Unity Catalog accède directement à la table Iceberg gérée par Snowflake dans le stockage objet. La query est exécutée uniquement à l'aide de compute Databricks, ce qui est plus rentable et optimisé pour les performances. Les tables Snowflake non-Iceberg ne sont pas éligibles à la fédération de catalogues et sont toujours consultées via la fédération de requêtes.
La fédération de catalogues et la fédération de requêtes s'appuient sur les mêmes méthodes d'authentification pour configurer la connexion :
- OAuth intégré Snowflake
- OAuth avec Microsoft Entra ID
- OAuth avec Okta
- Jeton d'accès OAuth
- Clé privée PEM
- Authentification de base (nom d’utilisateur/mot de passe)
Avant de commencer
Vous devez satisfaire aux exigences suivantes pour exécuter des requêtes fédérées sur Snowflake en utilisant la fédération de catalogues :
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.4 LTS ou version ultérieure, et le mode d'accès Standard ou Dédié .
- Les SQL Warehouse doivent être Pro ou Serverless et doivent utiliser la version 2025.16 ou supé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.
Configurez la fédération de catalogues
Les étapes générales de configuration de la fédération de catalogues sont similaires à celles de la fédération de requêtes : créer d’abord une connexion à Snowflake, puis créer et configurer un catalogue étranger. Cependant, vous devez également créer un *identifiant de stockage* et un *emplacement externe* pour les chemins d’accès aux tables Apache Iceberg enregistrées dans Snowflake.
-
Créez un emplacement externe pour les tables Iceberg.
Vous devez configurer un emplacement externe dans Unity Catalog pour régir l'accès aux emplacements de stockage cloud qui contiennent les tables Iceberg enregistrées dans votre base de données Snowflake. Les emplacements externes sont des objets sécurisables d'Unity Catalog qui associent des identifiants de stockage aux chemins de conteneurs de stockage cloud. Voir Présentation des emplacements externes.
Vous pouvez créer un emplacement externe à l'aide des interfaces suivantes :
L'emplacement externe sera spécifié comme chemin d'accès autorisé lors de la configuration du catalogue étranger.
-
Créez une connexion au catalogue Snowflake Horizon et créez un catalogue externe en utilisant l'une des méthodes d'authentification listées ci-dessus. L'invite vous demande de définir le nom du catalogue, le type, la connexion et la base de données. Vous devez également configurer les champs suivants :
- Chemins autorisés : Chemins de stockage dans le cloud qui peuvent être consultés par le catalogue. Le catalogue fédéré ne peut pas query les tables en dehors de ces chemins. Les chemins doivent faire partie d'un emplacement externe. Vous pouvez modifier les chemins autorisés après avoir créé le catalogue. Voir Que sont les chemins autorisés ?.
- Emplacement de stockage : Un emplacement dans le stockage cloud pour stocker les métadonnées des tables Iceberg dans ce catalogue. Ce paramètre vous permet de lire les tables Iceberg dans un catalogue étranger via le stockage d'objets. La lecture et l'écriture vers les tables Iceberg avec le protocole JDBC ne sont pas prises en charge, mais les tables non-Iceberg ne sont pas affectées.
Options de connexion avancées
Les connexions Snowflake prennent en charge l'option avancée suivante pour les environnements à sortie restreinte ou de connectivité privée :
disableOCSPChecksDéfinissez surtruepour désactiver les vérifications de révocation de certificat OCSP (Online Certificate Status Protocol) dans le driver JDBC Snowflake. La désactivation des vérifications OCSP ignore la vérification de la révocation des certificats.
Autorisez le trafic sortant vers le répondeur OCSP de Snowflake chaque fois que possible. Laissez disableOCSPChecks non défini ou définissez-le à false. Définissez-le sur true uniquement si votre configuration de connectivité privée ou à egress restreint 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.
Accorder les autorisations pour accéder aux tables fédérées
Les utilisateurs doivent configurer les autorisations nécessaires dans Snowflake et Unity Catalog.
Accorder les autorisations Snowflake
Le rôle Snowflake utilisé dans la connexion doit avoir des privilèges suffisants pour lire les bases de données, les schémas et les tables que vous souhaitez fédérer. Exécutez la requête SQL suivante dans Snowflake :
GRANT USAGE ON DATABASE <db> TO ROLE <role>;
GRANT USAGE ON SCHEMA <db>.<schema> TO ROLE <role>;
GRANT SELECT ON ALL TABLES IN SCHEMA <db>.<schema> TO ROLE <role>;
GRANT SELECT ON FUTURE TABLES IN SCHEMA <db>.<schema> TO ROLE <role>;
Remplacer :
<db>- le nom de la base de données Snowflake à fédérer (par exemple,MY_DATABASE).<schema>- le nom du schéma au sein de cette base de données (par exemple,MY_SCHEMA).<role>- le rôle Snowflake spécifié dans les identifiants de connexion (par exemple,MY_DATABRICKS_ROLE).
Des autorisations Snowflake manquantes sont une cause fréquente de l'absence de schémas ou de tables dans le catalogue fédéré.
Accorder des autorisations Unity Catalog
Après avoir configuré la fédération de catalogues, les utilisateurs doivent disposer des autorisations Unity Catalog appropriées pour accéder aux tables fédérées :
- Tous les utilisateurs ont besoin des autorisations
USE CATALOGetUSE SCHEMAsur le catalogue et le schéma respectivement. - Pour les tables Iceberg accessibles via la fédération de catalogue, les utilisateurs ont besoin de l'autorisation
MODIFYsur la table fédérée Unity Catalog. - Pour lire à partir de la table fédérée, les utilisateurs doivent disposer de l'autorisation
SELECT.
Pour plus d’informations sur les privilèges Unity Catalog et leur attribution, reportez-vous à Gérer les privilèges dans Unity Catalog.
Limitations de la fédération de catalogues
L'exécution de requêtes fédérées sur Snowflake à l'aide de la fédération de catalogues présente les limitations suivantes :
-
Certaines tables Iceberg ne peuvent être lues qu'à l'aide de la fédération de requêtes :
- Tables avec des emplacements incompatibles avec les URI (qui contiennent des caractères spéciaux).
- Tables dont l'emplacement des métadonnées est en dehors de l'emplacement de la table.
- Tables avec des emplacements qui ont des schémas non pris en charge (seuls
s3,s3a,s3n,abfs,abfss,gs,r2,wasbetwasbssont pris en charge).
-
Les tables Iceberg étrangères accessibles à partir de moteurs externes doivent être actualisées à l'aide de
ALTER TABLE <table_name> REFRESHpour garantir la cohérence en lecture/écriture entre les écritures dans le catalogue externe et les lectures par un moteur externe via les API ouvertes d'Unity Catalog. Voir REFRESH FOREIGN (CATALOG, SCHEMA, and TABLE). -
Les tables avec des noms identiques, sans tenir compte de la casse, sont en conflit. La première table à charger est celle qui apparaît.
-
Pour Azure, les tables Iceberg Snowflake ne peuvent pas se trouver à l'emplacement racine du conteneur.
Voir Limitations pour les limitations liées à Iceberg.
Déterminez si une table Snowflake étrangère utilise la fédération de catalogue ou de query
Les tables Snowflake étrangères lues à l'aide de la fédération de catalogues affichent le format source Iceberg dans l'Explorateur de catalogues. Les tables Iceberg lues à l'aide de la fédération de query affichent le format source Snowflake dans l'Explorateur de catalogues. Les queries exécutées sur des tables avec les deux formats de stockage sont exécutées à l'aide de la fédération de queries, qui utilise le compute Snowflake.
Mode fallback
Lorsque vous interrogez une table dans un catalogue Snowflake fédéré, Databricks tente automatiquement de lire la table Iceberg directement depuis le cloud storage pour des performances optimales. Si la table ne répond pas aux critères d'accès direct, Databricks revient à fédérer la query vers Snowflake à l'aide de JDBC. Le tableau suivant décrit le flux de résolution de query :
Étape de résolution de query | Description |
|---|---|
Découverte de catalogues | Pendant la planification de query, Databricks Runtime vérifie auprès d'Unity Catalog et détecte que la table réside dans un catalogue fédéré Snowflake. |
Résolution des métadonnées Snowflake | En utilisant la connexion Unity Catalog, Databricks Runtime exécute des queries vers Snowflake pour :
|
Tentative d'accès direct | Si l'un des critères suivants échoue, Databricks Runtime fédère la query à l'aide du Driver JDBC Snowflake. La table affiche le format source Snowflake dans l'Explorateur de catalogues.
Si tous les critères sont remplis, Databricks Runtime vérifie les métadonnées renvoyées et lit la table Iceberg directement depuis le chemin de stockage d'objets. La table affiche le format source **Iceberg** dans l'Explorateur de catalogues. |
Dépannage
Aucun schéma ou table n'apparaît dans le catalogue fédéré.
Si les schémas ou les tables de votre base de données Snowflake n'apparaissent pas après la configuration de la fédération de catalogues, la cause la plus courante est que le rôle Snowflake utilisé dans la connexion ne dispose pas des autorisations nécessaires. Vérifiez que le rôle dispose de USAGE sur la base de données et les schémas cibles, et de SELECT sur les tables. Voir Accorder les permissions Snowflake.