Utiliser Snowpipe Streaming avec des tables Apache Iceberg™

Avec le SDK Snowflake Ingest version 3.0.0 et ultérieures, Snowpipe Streaming peut ingérer des données dans les tables Apache Iceberg gérées par Snowflake. Le SDK Snowpipe Ingest Java prend en charge le chargement dans les tables Snowflake standard (non-Iceberg) et les tables Iceberg.

Snowpipe Streaming avec des tables Iceberg

Les données envoyées via l’API Snowpipe Streaming ingèrent des lignes par le biais d’un ou de plusieurs canaux, qui sont automatiquement vidés en fonction de la valeur MAX_CLIENT_LAG spécifiée.

La propriété MAX_CLIENT_LAG contrôle la latence de l’ingestion du streaming.

  • Pour les tables Snowflake standard (non-Iceberg), la valeur par défaut de MAX_CLIENT_LAG est de 1 seconde.

  • Pour les tables Iceberg, la valeur par défaut de MAX_CLIENT_LAG est de 30 secondes.

Snowflake se connecte à votre emplacement de stockage à l’aide d’un volume externe et Snowpipe Streaming flushe les données pour créer des fichiers de données Parquet compatibles avec Iceberg avec les métadonnées Iceberg correspondantes. Ces fichiers de données et de métadonnées Parquet sont importés dans votre emplacement de stockage Cloud externe configuré et mis à disposition en tant que tables Iceberg gérées par Snowflake et enregistrées avec Snowflake en tant que catalogue Iceberg.

Configurations

Créez votre table Iceberg gérée par Snowflake avec votre volume externe configuré et spécifiez le nom de la table Iceberg dans votre requête de canal ouvert.

Pour activer Snowpipe Streaming avec la table Iceberg gérée par Snowflake, vous devez définir la propriété suivante ENABLE_ICEBERG_STREAMING=true dans le fichier profile.json.

Types de données pris en charge

  • Le SDK Snowflake Ingest prend en charge la plupart des types de données Iceberg, les mêmes que ceux actuellement pris en charge par Snowflake. Pour plus d’informations, voir Types de données des tables Apache Iceberg™.

  • Le SDK Snowflake Ingest prend en charge l’ingestion dans les trois types de données structurées : ARRAY structuré, OBJECT structuré, MAP structuré.

Notes sur l’utilisation

  • La valeur par défaut de MAX_CLIENT_LAG pour le streaming vers les tables Iceberg gérées par Snowflake est de 30 secondes afin de garantir l’optimisation des fichiers Parquet. Vous pouvez définir cette propriété sur une valeur inférieure, mais nous vous recommandons de ne pas le faire à moins que le débit ne soit très élevé.

  • Le SDK Ingest prend en charge le compactage automatique sans serveur de petits fichiers Parquet de manière asynchrone.

  • La même application client ne peut pas être utilisée simultanément pour des tables Iceberg et non-Iceberg.

  • Les tables Iceberg gérées par Snowflake ne prennent pas en charge le chiffrement côté client.

  • Les fichiers Parquet compatibles avec Iceberg sont créés sur la base du site STORAGE_SERIALIZATION_POLICY spécifié dans la table Iceberg.

  • Snowpipe Streaming ne prend en charge que Snowflake en tant que catalogue Iceberg, mais il prend également en charge la synchronisation avec Snowflake Open Catalog.

  • Snowflake se connecte à votre emplacement de stockage via un volume externe. Vous êtes responsable du stockage de données pour les tables Iceberg.

  • L’ingestion de flux Snowpipe dans les tables Iceberg gérées par Snowflake est disponible gratuitement pour une période limitée.

Limitations

Les limitations documentées pour Snowpipe Streaming s’appliquent également à Snowpipe Streaming avec tables Iceberg.