AWS a annoncé que le service Amazon S3 Tables prend désormais en charge tous les types de données de la spécification Apache Iceberg V3, ce qui permet de créer de nouvelles tables en version V3 ou de mettre à niveau les tables existantes basées sur V2. La mise à jour comprend les vecteurs de suppression (Deletion Vectors), la traçabilité des lignes (Row Lineage), ainsi que les types de données variant, nanosecond timestamp, geometry, geography et unknown.
Ces fonctionnalités ciblent les équipes d’analyse qui gèrent de grandes tables sur des lacs de données. Au lieu de représenter les données semi-structurées, les coordonnées géographiques ou les horodatages à très haute précision sous forme de chaînes de caractères ou d’entiers, elles peuvent être stockées dans des types natifs au sein de tables Iceberg, tout en continuant à utiliser des fichiers Parquet sur Amazon S3.
Qu’est-ce qui change concrètement ?
Les vecteurs de suppression remplacent les fichiers de suppression positionnels utilisés dans Iceberg V2 par une représentation binaire compressée. Selon l’exemple présenté par AWS, la suppression de 50 000 enregistrements dans une table contenant deux milliards de lignes peut produire un seul fichier de vecteur de suppression au lieu de milliers de petits fichiers, ce qui réduit la charge liée aux fichiers et le temps de compactage ultérieur.
La traçabilité des lignes ajoute automatiquement les deux champs _row_id et _last_updated_sequence_number. Les pipelines de traitement ultérieurs peuvent utiliser le numéro de séquence pour extraire les lignes qui ont changé depuis un point de contrôle précédent, au lieu d’analyser la table entière à chaque exécution.
Le type variant stocke les données semi-structurées dans un format en colonnes, ce qui permet au moteur de requêtes de lire directement les champs requis et de tirer parti des statistiques afin de réduire les opérations d’entrée-sortie, plutôt que d’analyser du texte JSON à chaque requête. Iceberg V3 fournit également des types natifs pour les données géospatiales et les horodatages à la précision de la nanoseconde.
Mise à niveau depuis Iceberg V2
Une table existante peut être mise à niveau de manière atomique en modifiant la propriété format-version pour lui attribuer la valeur 3, sans réécrire les données. Les lecteurs V2 continuent de fonctionner sur les tables mises à niveau vers V3 jusqu’à l’adoption complète de V3 dans l’environnement, tandis que S3 Tables supprime les anciens fichiers de suppression lors du cycle de compactage suivant et commence à initialiser les données de traçabilité des lignes lors de la première modification ultérieure des données.
Cette mise à niveau est toutefois unidirectionnelle : la spécification Apache Iceberg ne prend pas en charge le retour de V3 à V2. Il faut donc vérifier au préalable que tous les moteurs qui accèdent à la table prennent en charge la nouvelle version.
Compatibilité et limitations
Les nouveaux types de données nécessitent un moteur basé sur Apache Spark 4.0 ou une version ultérieure, tel qu’AWS Glue 6.0 ou une version ultérieure, ou Amazon EMR version 8.1 ou une version ultérieure. Ces types sont également limités aux tables utilisant Parquet et ne sont pas disponibles avec ORC ou Avro.
Les colonnes variant, geometry, geography ou les horodatages à la précision de la nanoseconde ne peuvent pas être utilisées dans l’ordre de table destiné au compactage, même si les tables qui les contiennent restent compactables lorsque leur ordre repose sur des colonnes d’autres types. S3 Tables continue de gérer automatiquement le compactage et la maintenance, avec la prise en charge de la création de tables depuis la console Amazon S3, AWS CLI ou tout moteur prenant en charge l’interface Iceberg REST Catalog.
Pourquoi cette mise à jour est-elle importante ?
Cette mise à jour offre aux équipes chargées des données une approche nécessitant moins de transformations personnalisées pour gérer les suppressions à grande échelle, les données irrégulières et les mises à jour incrémentielles. Toutefois, l’avantage concret dépend de la préparation des moteurs de requêtes et d’écriture de l’organisation : la mise à niveau n’implique pas une compatibilité immédiate avec tous les outils, et l’utilisation des nouveaux types limite le format de stockage et nécessite des versions précises de Spark et des services associés.
La prise en charge d’Apache Iceberg V3 est désormais disponible dans toutes les régions AWS qui prennent en charge S3 Tables, sans frais supplémentaires spécifiques à la mise à jour, les tarifs habituels de S3 Tables continuant de s’appliquer.