Qu'est-ce qu'Apache Iceberg ?
Apache Iceberg est un format de table de données 100 % open source, distribué, piloté par la communauté, sous licence Apache 2.0, qui permet de simplifier le traitement des données sur de grands jeux de données stockés dans des lacs de données. Les ingénieurs de données utilisent Apache Iceberg parce qu'il est rapide, efficace et fiable à toutes les échelles et qu'il enregistre l'évolution des jeux de données au fil du temps. Apache Iceberg permet des intégrations faciles avec des frameworks de traitement de données populaires tels qu'Apache Spark, Apache Flink, Apache Hive, Presto, etc.
Qu'est-ce qu'un lac de données transactionnel ?
Un lac de données est un référentiel centralisé qui vous permet de stocker toutes vos données structurées et non structurées à n'importe quelle échelle. Une transaction de données est une série d'échanges de données effectués en une seule opération. Par exemple, lorsqu'un client retire de l'argent d'un compte bancaire, la banque procède à plusieurs échanges de données en même temps dans le cadre d'une seule transaction de données, notamment en vérifiant que le solde du compte est suffisant, en vérifiant l'identité et en débitant le retrait du compte. Un lac de données transactionnel est un type de lac de données qui non seulement stocke des données à grande échelle, mais prend également en charge les opérations transactionnelles, garantit l'exactitude et la cohérence des données et vous permet de suivre l'évolution des données et de leur structure au fil du temps. Ces propriétés sont regroupées sous le nom d'atomicité, de cohérence, d'isolation et de durabilité (ACID) :
- L'atomicité garantit que chaque transaction est un événement unique qui réussit ou échoue complètement : il n'existe pas de situation intermédiaire.
- La cohérence garantit que toutes les données écrites sont valides conformément aux règles définies du lac de données, garantissant ainsi l'exactitude et la fiabilité des données.
- L'isolation garantit que plusieurs transactions peuvent avoir lieu en même temps sans interférer les unes avec les autres, garantissant ainsi que chaque transaction s'exécute indépendamment.
- La durabilité signifie que les données ne sont ni perdues ni corrompues une fois qu'une transaction est soumise. Les données peuvent être récupérées en cas de défaillance du système, telle qu'une panne de courant.
Quels sont les avantages de l'utilisation d'Apache Iceberg ?
Parmi les principaux avantages de l'utilisation d'Apache Iceberg pour les lacs de données transactionnels, citons :
- La familiarité de SQL : le langage SQL (structured query language) est un langage de requête populaire fréquemment utilisé dans tous les types d'applications. Les analystes de données et les développeurs étudient et utilisent le langage SQL parce qu'il s'intègre bien à différents langages de programmation et qu'il est également assez facile à apprendre, car il utilise des mots-clés anglais courants dans ses instructions. Apache Iceberg permet à toute personne familiarisée avec le langage SQL (structured query language) de créer des lacs de données et d'effectuer la plupart des opérations sur les lacs de données sans avoir à apprendre un nouveau langage.
- Cohérence des données : Apache Iceberg assure la cohérence des données afin de garantir que tous les utilisateurs qui lisent et écrivent sur les données voient les mêmes données.
- Structure des données : Apache Iceberg permet de modifier facilement votre structure de données, également appelée évolution du schéma, ce qui signifie que les utilisateurs peuvent ajouter, renommer ou supprimer des colonnes d'une table de données sans perturber les données sous-jacentes.
- Gestion des versions des données : Apache Iceberg prend en charge la gestion des versions des données, ce qui permet aux utilisateurs de suivre les modifications apportées aux données au fil du temps. Cela active la fonctionnalité de voyage dans le temps, qui permet aux utilisateurs d'accéder aux versions historiques des données et de les interroger et d'analyser les modifications apportées aux données entre les mises à jour et les suppressions.
- Support multiplateforme : Apache Iceberg prend en charge différents systèmes de stockage et moteurs de requêtes, notamment Apache Spark, Apache Hive et Presto. Cela facilite l'utilisation d'Iceberg dans différents environnements de traitement de données.
- Traitement progressif : Iceberg prend en charge le traitement progressif, qui permet aux utilisateurs de traiter uniquement les données qui ont changé depuis la dernière exécution, également connu sous le nom de CDC (Change Data Capture, capture de changement des données). Cela peut contribuer à améliorer l'efficacité et les performances du traitement des données.
Quels sont les cas d'utilisation courants d'Apache Iceberg ?
Apache Iceberg convient à de nombreux cas d'utilisation de lacs de données, notamment :
- Les tables de données dans des lacs de données qui nécessitent des suppressions fréquentes, par exemple lors de l'application des lois sur la confidentialité des données.
- Les tables de données dans un lac de données nécessitant des mises à jour au niveau des enregistrements. Cela est utile lorsque votre jeu de données nécessite des mises à jour fréquentes après l'arrivée des données, par exemple, des données de vente susceptibles de changer en raison d'événements ultérieurs tels que les retours de clients. Iceberg permet de mettre à jour des enregistrements individuels sans avoir à republier le jeu de données complet.
- Les tables de données dans des lacs de données qui présentent des modifications imprévisibles, telles que les tables SCD (Slowly Changing Dimension, dimension à évolution lente). Un exemple de SCD est une table d'enregistrement client qui inclut le nom, l'emplacement et les coordonnées qui peuvent changer au fil du temps à des intervalles inconnus.
- Lorsque les transactions avec le lac de données nécessitent une validité, une durabilité et une fiabilité garanties des données, les formats de table Apache Iceberg peuvent être déployés pour assurer les transactions ACID.
- Lorsqu'il est nécessaire de remonter le temps pour interroger des versions historiques de données afin d'effectuer une analyse des tendances, d'analyser les modifications apportées aux données sur une certaine période ou de restaurer ou de revenir à une version précédente afin de corriger des problèmes.
Qui utilise Apache Iceberg ?
Les ingénieurs, administrateurs, analystes et scientifiques des données font partie des personnes qui utilisent Apache Iceberg. Les ingénieurs et administrateurs de données peuvent utiliser Apache Iceberg pour concevoir et créer des systèmes de stockage de données évolutifs. Les analystes et scientifiques des données peuvent utiliser Apache Iceberg pour analyser efficacement de grands jeux de données.
Pourquoi choisir Apache Iceberg ?
Apache Iceberg offre un moyen rapide et efficace de traiter de grands jeux de données à grande échelle. Il offre les avantages suivants :
- Open source : Apache Iceberg est un projet open source, ce qui signifie qu'il est gratuit et peut être personnalisé pour répondre à vos besoins spécifiques. Il rassemble également une communauté active de développeurs qui améliorent continuellement le projet et y ajoutent de nouvelles fonctionnalités.
- Capacité de mise à l'échelle : Apache Iceberg est conçu pour gérer efficacement de grands jeux de données. Il peut partitionner et organiser les données sur plusieurs nœuds, ce qui permet de répartir la charge de travail et d'accélérer le traitement des données.
- Performances : Apache Iceberg possède diverses fonctionnalités destinées à optimiser les performances des requêtes, notamment le stockage en colonnes et des techniques de compression telles que le pushdown de prédicats et l'évolution des schémas.
- Flexibilité : Apache Iceberg vous permet de modifier l'organisation de vos données afin qu'elles puissent évoluer au fil du temps sans que vous deviez réécrire vos requêtes ou reconstruire vos structures de données. Il prend également en charge plusieurs formats de données et sources de données, ce qui facilite son intégration aux systèmes existants.
- Fiabilité : Apache Iceberg garantit la cohérence et la fiabilité des données grâce à sa prise en charge des transactions. Vous pouvez suivre l'évolution des données au fil du temps et revenir aux versions historiques pour corriger les problèmes.
Quels services AWS prennent en charge Iceberg ?
Apache Iceberg prend en charge des frameworks de traitement de données populaires tels qu'Apache Spark, Apache Flink, Apache Hive et Presto. Les services AWS tels qu’Amazon Redshift, Amazon Athena et Amazon EMR et AWS Glue incluent la prise en charge native des cadres de lacs de données transactionnels, notamment Apache Iceberg. Apache Iceberg, associé aux services AWS pris en charge, permet de créer un lac de données transactionnel, souvent basé sur le stockage dans S3.
- Amazon Redshift est un service d’analyse et d’entreposage de données SQL entièrement géré et alimenté par l’IA qui permet aux clients de prendre des décisions commerciales de manière rapide et rentable. Amazon Redshift propose une architecture MPP (Massively Parallel Processing), multi-clusters et sans serveur dotée de fonctionnalités zéro-ETL qui permettent des analyses en temps quasi réel et des cas d’utilisation de l’IA/ML avec partage de données. Les clients peuvent utiliser Amazon Redshift pour interroger les tables Apache Iceberg dans le lac de données, accessibles via le Catalogue de données AWS Glue, et les associer à leurs tables dans l’entrepôt de données pour des analyses complètes.
- Amazon Athena est un service d'analyse sans serveur et interactif basé sur des frameworks open source, prenant en charge les formats de table et de fichier ouverts. Athena permet d'analyser plusieurs téraoctets de données là où elles se trouvent, de manière simple et flexible. Athena fournit un support natif des requêtes de lecture, de voyage dans le temps, d'écriture et DDL pour les tables Apache Iceberg qui utilisent le format Apache Parquet pour les données et le catalogue AWS Glue pour leur métastore.
- Amazon EMR est une solution de big data pour le traitement des données à l'échelle du pétaoctet, l'analyse interactive et le machine learning à l'aide de frameworks open source, tels qu'Apache Spark, Hadoop, Presto et Hive. À partir d'Amazon EMR 6.5.0, vous pouvez utiliser Apache Spark 3 sur des clusters Amazon EMR au format de table Iceberg. Les frameworks EMR tels que Spark, Trino, Flink et Hive prennent en charge Apache Iceberg.
- AWS Glue est un service d’intégration des données sans serveur qui facilite la découverte, la préparation, le déplacement et l’intégration des données depuis des sources multiples pour l’analytique, le machine learning (ML) et le développement des applications. AWS Glue 3.0 et versions ultérieures prennent en charge le framework Apache Iceberg pour les lacs de données. Vous pouvez utiliser AWS Glue pour effectuer des opérations de lecture et d'écriture sur des tables Iceberg dans Amazon S3, ou travailler avec des tables Iceberg à l'aide du Catalogue de données AWS Glue. Des opérations supplémentaires telles que l'insertion, la mise à jour et toutes les requêtes et écritures Spark sont également prises en charge.