Synchronisation d’une table gérée par Snowflake avec Snowflake Open Catalog¶
Pour interroger une table Apache Iceberg™ gérée par Snowflake à l’aide d’un moteur tiers tel qu’Apache Spark™, vous pouvez synchroniser la table avec Snowflake Open Catalog.
Cette rubrique explique comment synchroniser une table Iceberg gérée par Snowflake avec Snowflake Open Catalog à l’aide d’une intégration de catalogue dans Snowflake et d’un catalogue externe dans Open Catalog.
Étape 1 : Créer un volume externe¶
Si vous n’en avez pas déjà un, commencez par créer un volume externe dans Snowflake qui donne accès à l’emplacement de stockage Cloud où vous souhaitez stocker vos données de table et vos métadonnées.
Suivez les instructions relatives à votre service de stockage dans le Cloud :
Étape 2 : Configurer les ressources Open Catalog¶
Ensuite, suivez les étapes de cette section pour créer un catalogue externe et une connexion de service dans votre compte Open Catalog.
Suivez les instructions dans Création d’un catalogue pour créer un catalogue externe dans votre compte Open Catalog. Assurez-vous que les paramètres suivants pour le catalogue externe sont configurés :
Le bouton bascule External est activé.
L”Default base location correspond à l”
STORAGE_BASE_URL
pour le volume externe que vous avez créé dans Étape 1 : Créer un volume externe.
Open Catalog synchronise vos tables gérées par Snowflake avec ce catalogue externe.
Si vous ne disposez pas encore de connexion de service pour Snowflake, suivez les instructions dans Configuration d’une connexion de service pour créer une connexion pour le moteur Snowflake dans votre compte Open Catalog.
Configurez un rôle de catalogue pour votre catalogue externe avec des privilèges permettant d’accéder à votre catalogue externe. Pour obtenir des instructions, voir Octroi de privilèges pour un catalogue.
Le rôle de catalogue doit disposer des privilèges suivants sur le catalogue :
TABLE_CREATE
TABLE_WRITE_PROPERTIES
TABLE_DROP
NAMESPACE_CREATE
NAMESPACE_DROP
Vous pouvez soit accorder chacun de ces privilèges au rôle de catalogue, soit accorder le privilège CATALOG_MANAGE_CONTENT, qui inclut ces privilèges. Pour plus d’informations, voir Privilèges du catalogue pour Snowflake Open Catalog.
Joignez le rôle de catalogue au rôle principal de votre connexion de service. Cela permet à la connexion de service d’accéder au catalogue. Pour obtenir des instructions, voir Accorder un rôle de catalogue à un rôle principal.
Étape 3 : Créer une intégration de catalogue pour Open Catalog¶
Créez une intégration de catalogue pour Open Catalog via la commande CREATE CATALOG INTEGRATION (Snowflake Open Catalog). Pour WAREHOUSE, spécifiez le nom du catalogue externe que vous avez configuré dans votre compte Open Catalog.
Pour résoudre les problèmes liés à la création d’une intégration de catalogue, consultez Impossible de créer une intégration de catalogue pour Open Catalog.
CREATE OR REPLACE CATALOG INTEGRATION my_open_catalog_int
CATALOG_SOURCE = POLARIS
TABLE_FORMAT = ICEBERG
CATALOG_NAMESPACE = 'myOpenCatalogNamespace'
REST_CONFIG = (
CATALOG_URI = 'https://myAccount.snowflakecomputing.com/polaris/api/catalog'
WAREHOUSE = 'myOpenCatalogExternalCatalogName'
)
REST_AUTHENTICATION = (
TYPE = OAUTH
OAUTH_CLIENT_ID = 'myClientId'
OAUTH_CLIENT_SECRET = 'myClientSecret'
OAUTH_ALLOWED_SCOPES = ('PRINCIPAL_ROLE:ALL')
)
ENABLED = TRUE;
Note
Vous pouvez utiliser cette intégration de catalogue pour synchroniser une ou plusieurs tables gérées par Snowflake.
Étape 4 : Créer une table gérée par Snowflake¶
Créez une table Iceberg gérée par Snowflake à l’aide de la commande CREATEICEBERGTABLE (Snowflake comme catalogue Iceberg).
Pour le paramètre CATALOG_SYNC, spécifiez le nom de votre intégration de catalogue pour Open Catalog.
Pour résoudre les problèmes liés à la création d’une table gérée par Snowflake, consultez Impossible de créer une table gérée par Snowflake.
CREATE OR REPLACE ICEBERG TABLE my_managed_iceberg_table (col1 INT)
CATALOG = 'SNOWFLAKE'
EXTERNAL_VOLUME = 'my_external_volume'
BASE_LOCATION = 'my_managed_iceberg_table'
CATALOG_SYNC = 'my_open_catalog_int';
Lorsque vous modifiez la table dans Snowflake, les modifications sont automatiquement synchronisées avec le catalogue externe de votre compte Open Catalog. D’autres moteurs tels qu’Apache Spark™ peuvent interroger la table en se connectant à Open Catalog.