Utilisation d'Apache Iceberg V3 - Amazon Simple Storage Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Utilisation d'Apache Iceberg V3

Apache Iceberg Version 3 (V3) est la dernière version de la spécification du format de table Apache Iceberg. Elle introduit des fonctionnalités avancées pour créer des lacs de données à l'échelle du pétaoctet avec des performances améliorées et une réduction des coûts opérationnels. La V3 résout les problèmes de performances courants rencontrés avec la V2, en particulier en ce qui concerne les mises à jour par lots et les suppressions de conformité.

AWS prend en charge les vecteurs de suppression et le lignage des lignes tels que définis dans la spécification Apache Iceberg version 3 (V3). Ces fonctionnalités sont disponibles avec Apache Spark on Amazon EMR 7.12, AWS Glue ETL,Amazon SageMaker Unified Studio Notebooks et les tables Apache Iceberg du catalogue de données AWS Glue, y compris les tables Amazon S3.

Principales fonctionnalités de la V3

Vecteurs de suppression

Remplace les fichiers de suppression positionnelle de la V2 par un format binaire efficace stocké sous forme de fichiers Puffin. Cela élimine l'amplification de l'écriture due aux mises à jour par lots aléatoires et aux suppressions liées à la conformité au RGPD, réduisant ainsi de manière significative les frais liés à la maintenance des données actualisées. Organisations traitant des mises à jour à fréquence élevée constateront une amélioration immédiate des performances d'écriture et une réduction des coûts de stockage grâce à la réduction du nombre de petits fichiers.

Row Lineage

Permet un suivi précis des modifications au niveau des lignes. Vos systèmes en aval peuvent traiter les modifications de manière incrémentielle, accélérant ainsi les pipelines de données et réduisant les coûts de calcul pour les flux de travail de capture des données de modification (CDC). Cette fonctionnalité intégrée élimine le besoin d'implémentations personnalisées de suivi des modifications.

Compatibilité des versions

La V3 maintient la rétrocompatibilité avec les tables V2. AWS les services prennent en charge simultanément les tables V2 et V3, ce qui vous permet de :

  • Exécuter des requêtes sur les tables V2 et V3

  • Mise à niveau des tables V2 existantes vers la V3 sans réécriture de données

  • Exécutez des requêtes de voyage dans le temps couvrant des instantanés V2 et V3

  • Utilisez l'évolution du schéma et le partitionnement masqué entre les versions de table

Important

La V3 est une mise à niveau unidirectionnelle. Une fois qu'une table est mise à niveau de la V2 à la V3, elle ne peut pas être rétrogradée à la V2 par le biais d'opérations standard.

Débuter avec la V3

Conditions préalables

Avant de travailler avec des tables V3, assurez-vous d'avoir :

  • Un AWS compte doté des autorisations IAM appropriées

  • Accès à un ou plusieurs services AWS d'analyse (EMR, Glue, Amazon SageMaker Unified Studio Notebooks ou S3 Tables)

  • Un compartiment S3 pour stocker les données de table et les métadonnées

  • Un bucket de tables pour commencer à utiliser S3 Tables ou un bucket S3 à usage général si vous créez votre propre infrastructure Iceberg

  • AWS Catalogue Glue configuré

Création de tables V3

Création de nouvelles tables V3

Pour créer une nouvelle table Iceberg V3, définissez la propriété de la table format-version sur 3.

À l'aide de Spark SQL :

CREATE TABLE IF NOT EXISTS myns.orders_v3 ( order_id bigint, customer_id string, order_date date, total_amount decimal(10,2), status string, created_at timestamp ) USING iceberg TBLPROPERTIES ( 'format-version' = '3' )

Mise à niveau des tables V2 vers la V3

Vous pouvez mettre à niveau les tables V2 existantes vers la V3 de manière atomique sans réécrire les données.

À l'aide de Spark SQL :

ALTER TABLE myns.existing_table SET TBLPROPERTIES ('format-version' = '3')
Important

La V3 est une mise à niveau unidirectionnelle. Une fois qu'une table est mise à niveau de la V2 à la V3, elle ne peut pas être rétrogradée à la V2 par le biais d'opérations standard.

Que se passe-t-il lors de la mise à niveau :

  • Un nouvel instantané de métadonnées est créé de manière atomique

  • Les fichiers de données Parquet existants sont réutilisés

  • Des champs de lignage de lignes sont ajoutés aux métadonnées de la table

  • Le prochain compactage supprimera les anciens fichiers de suppression de la V2

  • Les nouvelles modifications utiliseront les fichiers vectoriels de suppression de la V3

  • La mise à niveau n'effectue pas de remblayage historique des enregistrements de suivi des modifications par lignage

Activation des vecteurs de suppression

Pour tirer parti des vecteurs de suppression pour les mises à jour, les suppressions et les fusions, configurez votre mode d'écriture.

À l'aide de Spark SQL :

ALTER TABLE myns.orders_v3 SET TBLPROPERTIES ('format-version' = '3', 'write.delete.mode' = 'merge-on-read', 'write.update.mode' = 'merge-on-read', 'write.merge.mode' = 'merge-on-read' )

Ces paramètres garantissent que les opérations de mise à jour, de suppression et de fusion créent des fichiers vectoriels de suppression au lieu de réécrire des fichiers de données entiers.

Tirer parti du lignage des lignes pour le suivi des modifications

La V3 ajoute automatiquement des champs de métadonnées de lignage pour suivre les modifications.

À l'aide de Spark SQL :

# Query with parameter value provided last_processed_sequence = 47 SELECT id, data, _row_id, _last_updated_sequence_number FROM myns.orders_v3 WHERE _last_updated_sequence_number > :last_processed_sequence

Le champ _row_id identifie chaque ligne de manière unique, tandis que _last_updated_sequence_number indique la date de dernière modification de la ligne. Utilisez ces champs pour :

  • Identifier les lignes modifiées pour un traitement incrémentiel

  • Suivez le lignage des données à des fins de conformité

  • Optimisez les pipelines CDC

  • Réduisez les coûts de calcul en traitant uniquement les modifications

Bonnes pratiques pour la V3

Quand utiliser la V3

Envisagez de passer à la version 3 ou de commencer par celle-ci dans les cas suivants :

  • Vous effectuez fréquemment des mises à jour ou des suppressions par lots

  • Vous devez respecter le RGPD ou les exigences de conformité en matière de suppression

  • Vos charges de travail impliquent des perturbations à haute fréquence

  • Vous avez besoin de flux de travail CDC efficaces

  • Vous souhaitez réduire les coûts de stockage liés aux petits fichiers

  • Vous avez besoin de meilleures capacités de suivi des modifications

Optimisation des performances d'écriture

  • Activez les vecteurs de suppression pour les charges de travail gourmandes en mises à jour :

    SET TBLPROPERTIES ( 'write.delete.mode' = 'merge-on-read', 'write.update.mode' = 'merge-on-read', 'write.merge.mode' = 'merge-on-read' )
  • Configurez les tailles de fichier appropriées :

    SET TBLPROPERTIES ( 'write.target-file-size-bytes' = '536870912' — 512 MB )

Optimisation des performances de lecture

  • Tirez parti du lignage des lignes pour un traitement incrémentiel

  • Utilisez le voyage dans le temps pour accéder aux données historiques sans les copier

  • Activez la collecte de statistiques pour une meilleure planification des requêtes

Stratégie de migration

Lors de la migration de la V2 vers la V3 :

  • Testez d'abord en dehors de la production : validez le processus de mise à niveau et les performances

  • Mise à niveau pendant les périodes de faible activité - Minimisez l'impact sur les opérations simultanées

  • Surveillez les performances initiales - Suivez les indicateurs après la mise à niveau

  • Exécuter le compactage - Consolider les fichiers supprimés après la mise à niveau

  • Mettre à jour la documentation - Refléter les fonctionnalités de la V3 dans la documentation de l'équipe

Considérations de compatibilité

  • Versions du moteur - Assurez-vous que tous les moteurs accédant à la table prennent en charge la version 3

  • Outils tiers - Vérifiez la compatibilité avec la V3 avant de procéder à la mise à niveau

  • Stratégie de sauvegarde : testez les procédures de restauration basées sur des snapshots

  • Surveillance - Mettez à jour les tableaux de bord de surveillance pour les métriques spécifiques à la version 3

Résolution des problèmes

Problèmes courants

Erreur : « le format version 3 n'est pas pris en charge »
  • Vérifiez que la version de votre moteur est compatible avec la V3

    Le support V3 pour les AWS services Amazon est le suivant :

    Service Support V3
    EMR Spark Version 7.12+
    AWS Glue ETL Oui
    Carnets de notes Amazon SageMaker Unified Studio Oui
    AWS Glue : API REST Iceberg, maintenance des tables Oui
    Tables Amazon S3 : API REST Iceberg, maintenance des tables Oui
    Amazon Athéna (Turin) Non
  • Vérifiez la compatibilité du catalogue

  • Garantir les dernières versions AWS de service

Dégradation des performances après mise à niveau
  • Vérifiez qu'il n'y a aucun défaut de compactage. Consultez la section Journalisation et surveillance des tables S3 pour plus de détails.

  • Vérifiez si les vecteurs de suppression sont activés. Assurez-vous que les propriétés suivantes sont définies :

    SET TBLPROPERTIES ( 'write.delete.mode' = 'merge-on-read', 'write.update.mode' = 'merge-on-read', 'write.merge.mode' = 'merge-on-read' )
  • Vous pouvez vérifier les propriétés de la table à l'aide du code suivant :

    DESCRIBE FORMATTED myns.orders_v3
  • Passez en revue la stratégie de partition. Un partitionnement excessif peut entraîner la création de petits fichiers. Exécutez la requête ci-dessous pour obtenir la taille de fichier moyenne de votre table :

    SELECT avg(file_size_in_bytes) as avg_file_size_bytes FROM myns.orders_v3.files
Incompatibilité avec des outils tiers
  • Vérifiez que l'outil prend en charge les spécifications V3

  • Envisagez de gérer les tables V2 pour les outils non pris en charge

  • Contactez le fournisseur de l'outil pour connaître le calendrier de support V3

Obtenir de l'aide

  • AWS Support : contactez le AWS support pour les problèmes spécifiques au service

  • Communauté Apache Iceberg : Iceberg Slack

  • AWS Documentation : documentation AWS d'analyse

Tarification

Disponibilité

La prise en charge d'Apache Iceberg V3 est disponible dans toutes les AWS régions où Amazon EMR, AWS Glue Data Catalog, AWS Glue ETL et S3 Tables fonctionnent.

Ressources supplémentaires