Architecture hautes performances de Snowpipe Streaming avec les tables Apache Iceberg™¶
Snowpipe Streaming avec une architecture hautes performances prend en charge l’ingestion de données dans des tables :doc:` Apache Iceberg </user-guide/tables-iceberg>` gérées par Snowflake, y compris Iceberg v2 et Iceberg v3. Cela permet un flux de données en quasi temps réel dans les tables Iceberg avec tous les avantages de l’architecture hautes performances.
Note
L’architecture classique ne prend en charge que les tables Iceberg v2. Si vous avez besoin de la prise en charge d’Iceberg v3, vous devez utiliser l’architecture hautes performances. Pour plus d’informations sur la prise en charge d’Iceberg dans l’architecture classique, voir Snowpipe Streaming Classic avec tables Apache Iceberg™.
Fonctionnement¶
Snowpipe Streaming ingère des données via l’objet PIPE dans votre table Iceberg cible. Snowflake crée des fichiers de données Apache Parquet compatibles avec Iceberg avec les métadonnées Iceberg correspondantes et les charge dans votre emplacement de stockage Cloud externe configuré. Les données sont mises à disposition sous forme de table Iceberg gérée par Snowflake et enregistrée avec Snowflake comme catalogue Iceberg.
Snowflake se connecte à votre emplacement de stockage via un volume externe.
Prise en main¶
Cette section fournit un exemple étape par étape de la façon de configurer Snowpipe Streaming avec une architecture hautes performances pour ingérer des données dans une table Iceberg.
Étape 1 : Créer un volume externe¶
Créez un volume externe qui spécifie un emplacement de stockage pour vos données de table Iceberg.
Accordez le rôle de flux USAGE sur le volume externe :
Étape 2 : Créer une table Iceberg gérée par Snowflake¶
Créez une table Iceberg gérée par Snowflake avec votre volume externe configuré :
Note
Si vous omettez le paramètre ICEBERG_VERSION, la table par défaut est Iceberg v2.
Étape 3 : Créer un canal pour l’ingestion¶
Créez un canal qui cible la table Iceberg. Vous pouvez utiliser le canal par défaut (créé automatiquement) ou créer un canal personnalisé :
Étape 4 : Diffuser des données de flux à l’aide du SDK¶
Configurez le SDK pour diffuser des données dans votre table Iceberg via le canal. Utilisez la même configuration SDK que celle décrite dans:doc:snowpipe-streaming-high-performance-getting-started, en spécifiant le canal de votre table Iceberg dans la configuration du client.
Versions Iceberg prises en charge¶
L’architecture hautes performances prend en charge les tables Iceberg v2 et Iceberg v3.
L’architecture classique prend en charge uniquement les tables Iceberg v2.
Types de données pris en charge¶
Le SDK Snowflake Ingest prend en charge la plupart des mêmes types de données Iceberg que ceux actuellement pris en charge par Snowflake. Pour plus d’informations, voir Types de données des tables Apache Iceberg™.
Le SDK prend également en charge l’ingestion dans les trois:doc:types de données structurés </sql-reference/data-types-structured> : ARRAY structuré, OBJECT structuré et MAP structuré.
Notes sur l’utilisation¶
Snowpipe Streaming ne prend en charge que Snowflake en tant que catalogue Iceberg. Les tables Iceberg gérées en externe qui utilisent des catalogues externes (commeAWS Glue ou Hive Metastore) ne sont pas prises en charge. Toutefois, vous pouvez :doc:` synchroniser vos tables Iceberg gérées par Snowflake avec Snowflake Open Catalog </user-guide/tables-iceberg-open-catalog-sync>`.
Snowflake se connecte à votre emplacement de stockage via un volume externe. Vous êtes responsable du stockage de données pour les tables Iceberg.
Les fichiers Parquet compatibles avec Iceberg sont créés sur la base du site STORAGE_SERIALIZATION_POLICY spécifié dans la table Iceberg.
Limitations¶
Les limitations suivantes s’appliquent à Snowpipe Streaming avec une architecture hautes performances et des tables Iceberg :
Les tables Iceberg partitionnées ne sont pas prises en charge.
L’évolution du schéma n’est pas prise en charge pour les tables Iceberg.
Les colonnes VARCHAR avec contrainte de longueur (par exemple,``VARCHAR(100)``) ne sont pas prises en charge pour les tables Iceberg. Utilisez STRING ouVARCHAR sans contrainte de longueur.
Les limitations de l’architecture hautes performances de Snowpipe Streaming et les limitations des tables Iceberg s’appliquent également.