View a markdown version of this page

Travailler avec 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.

Travailler avec Apache Iceberg V3

Apache Iceberg Version 3 (V3) est la dernière version de la spécification du format de table Apache Iceberg, qui 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 charge opérationnelle réduite. La version 3 corrige les problèmes de performances courants rencontrés avec la version 2 (V2), notamment en ce qui concerne les mises à jour par lots et les suppressions de conformité.

AWS prend en charge les vecteurs de suppression, le lignage des lignes et le type de données variant tel que défini dans la spécification Apache Iceberg version 3 (V3). Vous pouvez utiliser ces fonctionnalités avec Apache Spark sur Amazon EMR, 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. Le type de données variant est spécifique aux tables 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 aléatoires par lots et aux suppressions liées à la conformité au RGPD, réduisant ainsi de manière significative les frais liés à la mise à jour des données. Les organisations qui traitent des mises à jour à haute fréquence constateront une amélioration immédiate des performances d'écriture et une réduction des coûts de stockage grâce à la diminution 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 des 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.

Type de données variant

Avec le type de données variant, vous pouvez écrire des données semi-structurées telles que JSON directement dans des tables Iceberg sans définir de schéma fixe à l'avance. Les moteurs compatibles V3 détruisent vos données semi-structurées en colonnes masquées au fur et à mesure que vous les écrivez, générant des statistiques sur les colonnes Parquet que les moteurs de requête utilisent pour des optimisations telles que l'élagage des fichiers. Cela réduit les données que vos requêtes analytiques analysent. S3 Tables assure la maintenance continue des tables pour les différentes colonnes, y compris le compactage, afin que vous puissiez consolider les données provenant de sources semi-structurées dans des fichiers plus volumineux que les moteurs Iceberg peuvent lire efficacement.

Compatibilité des versions

La version V3 assure 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écutez des requêtes sur les tables V2 et V3

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

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

  • Utiliser l'évolution des schémas et le partitionnement masqué entre les versions des tables

Important

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

Débuter avec la V3

Conditions préalables

Avant de travailler avec les tables V3, assurez-vous de disposer des éléments suivants :

  • Un AWS compte avec les 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 et les métadonnées des tables

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

  • AWS Catalogue Glue configuré

Création de tableaux V3

Création de nouvelles tables V3

Pour créer une nouvelle table Iceberg V3, définissez la propriété de 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 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 à sens unique. Une fois qu'une table est mise à niveau de la V2 vers la V3, elle ne peut pas être rétrogradée vers la V2 par le biais des 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

  • Row-lineage les champs sont ajoutés aux métadonnées de la table

  • Le prochain compactage supprimera les anciens fichiers de suppression V2

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

  • La mise à niveau n'effectue pas de remplissage historique des enregistrements de suivi des modifications de 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.

Tirer parti Row-lineage du suivi des modifications

La version 3 ajoute automatiquement des champs de métadonnées de lignage de 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 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 ne traitant que les modifications

Utilisation du type de données variant

Important

Le type de données variant n'est disponible que dans certaines AWS régions. Pour la liste complète des régions prises en charge, consultezDisponibilité.

Avec le type de données variant, vous pouvez écrire des données semi-structurées telles que JSON directement dans vos tables Iceberg sans définir de schéma fixe à l'avance. Vous pouvez écrire des données plus rapidement tout en bénéficiant de performances de requêtes analytiques efficaces. Les moteurs compatibles avec Iceberg V3 détruisent vos données semi-structurées dans des colonnes masquées au fur et à mesure que vous les écrivez. Ces colonnes masquées génèrent des statistiques de colonnes Parquet que les moteurs de requêtes utilisent pour des optimisations telles que l'élagage des fichiers.

Création d'une table avec une colonne de variantes à l'aide de Spark SQL :

CREATE TABLE IF NOT EXISTS myns.events ( event_id bigint, event_timestamp timestamp, source string, event_data VARIANT ) USING iceberg TBLPROPERTIES ( 'format-version' = '3' )

Insérer des données semi-structurées dans la colonne des variantes :

INSERT INTO myns.events VALUES ( 1, current_timestamp(), 'web-app', PARSE_JSON('{"user_id": "u-1234", "action": "page_view", "page": "/products", "duration_ms": 350}') ); INSERT INTO myns.events VALUES ( 2, current_timestamp(), 'mobile-app', PARSE_JSON('{"user_id": "u-5678", "action": "purchase", "items": [{"sku": "A100", "qty": 2}], "total": 49.99}') );

Avec S3 Tables, la maintenance des tables pour les différentes colonnes, y compris le compactage, s'exécute automatiquement. Le compactage consolide les données provenant de sources semi-structurées provenant de petits fichiers dans des fichiers plus volumineux que les moteurs Iceberg peuvent lire plus efficacement, améliorant ainsi les performances des requêtes au fil du temps.

Meilleures pratiques pour la V3

Quand utiliser la V3

Envisagez de passer à la V3 ou de commencer par celle-ci lorsque :

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

  • Vous devez respecter les exigences du RGPD ou 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 nécessitant de nombreuses 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 fichiers appropriées :

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

Optimisation des performances de lecture

  • Tirez parti de la lignée 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 : intégrer les fonctionnalités de la V3 dans la documentation de l'équipe

Considérations de compatibilité

  • Versions des moteurs : assurez-vous que tous les moteurs accédant au tableau prennent en charge la version V3

  • Third-party tools - Vérifiez la compatibilité de la V3 avant la mise à niveau

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

  • Surveillance : mettez à jour les tableaux de bord de surveillance pour les indicateurs V3-specific

Considérations relatives au compactage

Compaction écrit par défaut des fichiers Parquet variants déchiquetés. Les anciens lecteurs qui ne prennent pas en charge le déchiquetage risquent de ne pas pouvoir lire les fichiers compactés. Vous pouvez désactiver le déchiquetage en définissant la propriété write.variant.shredding.enabled=false de la table.

Résolution des problèmes

Problèmes courants

Erreur : « La version 3 du format n'est pas prise en charge »
  • Consultez le catalogue de votre moteur de requêtes pour vérifier la compatibilité avec Iceberg V3.

  • Assurez-vous d'utiliser les dernières versions du AWS service.

  • Vérifiez que la version de votre moteur est compatible avec la V3

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

    Service Assistance V3 Support de la variante V3
    EMR Spark Version 7.12+ Version 8.0+
    AWS Colle ETL Oui Non
    Ordinateurs portables Amazon SageMaker Unified Studio Oui Non
    AWS Glue : API Iceberg REST, maintenance des tables Oui Non
    Tables Amazon S3 : API REST Iceberg, maintenance des tables Oui Oui*
    Amazon Athéna (Trino) Non Non

    *Disponibilité régionale partielle

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 tableau :

    SELECT avg(file_size_in_bytes) as avg_file_size_bytes FROM myns.orders_v3.files
Incompatibilité avec des outils tiers
  • Vérifier que l'outil prend en charge la spécification 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 de la version

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 analytique

Tarification

Disponibilité

La prise en charge par Apache Iceberg V3 des vecteurs de suppression et du lignage des lignes est disponible dans toutes les AWS régions où Amazon EMR, AWS Glue Data Catalog, AWS Glue ETL et S3 Tables opèrent.

Le type de données variant dans S3 Tables est disponible dans les AWS régions suivantes : USA Est (Virginie du Nord), USA Est (Ohio), USA Ouest (Oregon), Asie-Pacifique (Mumbai), Asie-Pacifique (Séoul), Asie-Pacifique (Singapour), Asie-Pacifique (Sydney), Asie-Pacifique (Tokyo), Canada (Centre), Europe (Francfort), Europe (Irlande), Europe (Londres), Europe (Paris), Europe (Stockholm) et Sud Amérique (São Paulo).

Ressources supplémentaires