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 de la version 3 de la spécification du format de table Iceberg
La dernière version de la spécification du format de table Apache Iceberg est la version 3. Cette version 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 frais d'exploitation. Il résout les problèmes de performances courants rencontrés avec la version 2, en particulier en ce qui concerne les mises à jour par lots et les opérations de suppression de conformité.
AWS prend en charge les vecteurs de suppression et le lignage des lignes tels que définis dans la spécification Iceberg version 3. Ces fonctionnalités sont disponibles avec Apache Spark sur les sites suivants Services AWS.
| Service AWS | Support de la version 3 |
|---|---|
|
Amazon EMR version 7.12 et versions ultérieures |
|
|
Oui |
|
|
AWS Glue: API REST Iceberg, maintenance des tables |
Oui |
|
Oui |
|
|
Tables Amazon S3 : API REST Iceberg, maintenance des tables |
Oui |
|
Non |
Principales fonctionnalités de la version 3
Les vecteurs de suppression remplacent les fichiers de suppression positionnels utilisés dans la version 2 par un format binaire efficace stocké sous forme de fichiers Puffin. Cela élimine l'amplification de l'écriture due aux mises à jour aléatoires par lots et aux suppressions conformes au règlement général sur la protection des données (RGPD), et réduit considérablement les frais de maintenance liés à la mise à jour des données. Organisations traitant des mises à jour fréquentes constateront des améliorations immédiates des performances d'écriture et une réduction des coûts de stockage grâce à la réduction du nombre de petits fichiers.
Le lignage des lignes 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 version 3 maintient la rétrocompatibilité avec les tables de la version 2. Les services AWS prennent en charge les tables des versions 2 et 3 simultanément, ce qui vous permet de :
-
Exécutez des requêtes sur les tables des versions 2 et 3.
-
Mettez à niveau les tables existantes de la version 2 vers la version 3 sans réécriture des données.
-
Exécutez des requêtes de voyage dans le temps couvrant des instantanés des versions 2 et 3.
-
Utilisez l'évolution du schéma et le partitionnement masqué entre les versions des tables.
Commencer à utiliser la version 3
Prérequis
Avant de travailler avec les tables de la version 3, assurez-vous que vous disposez des éléments suivants :
-
Et Compte AWS avec les autorisations AWS Identity and Access Management (IAM) appropriées.
-
Accès à un ou plusieurs services AWS d'analyse (Amazon EMR, blocs-notes AWS Glue Amazon SageMaker Unified Studio ou Amazon S3 Tables).
-
Un compartiment S3 pour stocker les données et les métadonnées des tables.
-
Un compartiment de tables pour commencer à utiliser Amazon S3 Tables ou un compartiment S3 à usage général si vous créez votre propre infrastructure Iceberg.
-
Un AWS Glue catalogue configuré.
Création de tables de version 3
Création de tables
Pour créer une nouvelle table Iceberg version 3, définissez la propriété de la format-version table 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 de la version 2 vers la version 3
Vous pouvez mettre à niveau les tables existantes de la version 2 vers la version 3 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 version 3 est une mise à niveau unidirectionnelle. Une fois qu'une table est mise à niveau de la version 2 vers la version 3, elle ne peut pas être rétrogradée à la version 2 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.
-
Les champs de lignage des lignes sont ajoutés aux métadonnées de la table.
Après la mise à niveau :
-
Le prochain compactage supprimera les fichiers de suppression de l'ancienne version 2.
-
Les nouvelles modifications utiliseront les fichiers vectoriels de suppression de la version 3.
La mise à niveau n'effectue pas de remblayage historique des enregistrements de suivi des modifications du lignage des lignes.
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.
Utilisation du lignage des lignes pour le suivi des modifications
La version 3 ajoute automatiquement des champs de métadonnées de lignage des lignes 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 _row_id champ identifie de manière unique chaque ligne et indique quand _last_updated_sequence_number la ligne a été modifiée pour la dernière fois. Utilisez ces champs pour :
-
Identifiez 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 version 3
Quand utiliser la version 3
Envisagez de passer à la version 3 ou de commencer par celle-ci lorsque :
-
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
-
Utilisez le lignage des lignes pour le 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
Lorsque vous migrez de la version 2 vers la version 3, suivez les meilleures pratiques suivantes :
-
Effectuez d'abord un test dans un environnement hors production pour valider le processus de mise à niveau et les performances.
-
Effectuez une mise à niveau pendant les périodes de faible activité afin de minimiser l'impact sur les opérations simultanées.
-
Surveillez les performances initiales et suivez les indicateurs après la mise à niveau.
-
Exécutez le compactage pour consolider les fichiers supprimés après la mise à niveau.
-
Mettez à jour la documentation de votre équipe pour refléter les fonctionnalités de la version 3.
Considérations de compatibilité
-
Versions du moteur : assurez-vous que tous les moteurs accédant à la table sont compatibles avec la version 3.
-
Outils tiers : vérifiez la compatibilité de votre outil avec la version 3 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 de problème
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 version 3. Pour plus de détails, consultez le tableau au début de cette section.
-
Vérifiez la compatibilité du catalogue.
-
Assurez-vous que vous utilisez les dernières versions de Services AWS.
Dégradation des performances après mise à niveau
-
Vérifiez qu'il n'y a aucun défaut de compactage. Pour plus d'informations, consultez la section Journalisation et surveillance des tables S3 dans la documentation Amazon S3.
-
Vérifiez que les vecteurs de suppression sont activés. Les propriétés suivantes doivent être 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 votre stratégie de partition. Le partitionnement excessif peut entraîner la création de fichiers de petite taille. Exécutez la requête suivante 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 la spécification de la version 3.
-
Envisagez de conserver les tables de version 2 pour les outils non pris en charge.
-
Contactez le fournisseur de l'outil pour connaître son calendrier de support pour la version 3.
Obtenir de l'aide
-
Pour Service AWS des problèmes spécifiques, contactez AWS Support
. -
Pour obtenir de l'aide auprès de la communauté Iceberg, utilisez le canal Slack d'Iceberg
. -
Pour plus d'informations sur l'utilisation Services AWS pour gérer vos charges de travail d'analyse, consultez Analytics sur AWS
.
Tarification
Disponibilité
La prise en charge de la version 3 de la spécification du format de table Iceberg est disponible partout Régions AWS
où Amazon EMR AWS Glue, AWS Glue Data Catalog, et S3 Tables fonctionnent. Pour connaître la disponibilité par région, voir Services AWS par région