Delta Lake ou Hive sur AWS – Prendre une décision éclairée
Amazon S3 est devenu la couche de stockage de référence pour l’analytique big data sur AWS. La question est de savoir comment ajouter un moteur de requêtes et une couche de métadonnées par-dessus ces données pour les transformer en un entrepôt de données exploitable.
Deux options populaires sont Delta Lake et Hive exécuté sur AWS EMR.
Ces deux approches interrogent les données stockées dans S3, mais elles diffèrent par leurs garanties transactionnelles, la gestion du schéma, les optimisations de performance et leur intégration dans l’écosystème.
Delta Lake sur AWS S3
Delta Lake est un format de stockage open source qui apporte des transactions ACID et l’évolution de schéma aux data lakes. Sur AWS, il est souvent associé à Apache Spark exécuté sur EMR pour traiter de grands volumes de données stockés dans S3.
Fonctionnement sur AWS :
- Stockage des données : Les fichiers bruts ou traités (Parquet, JSON, CSV) sont stockés dans un bucket S3.
Exemple :
s3://my-data-lake/sales/2024/10/part-0001.snappy.parquet
- Format Delta : Delta Lake maintient un journal des transactions (
_delta_log
) dans le même chemin S3 pour suivre les changements de schéma, les ajouts et suppressions de données. - Exécution des requêtes : Spark sur EMR lit les tables Delta directement depuis S3, appliquant la validation de schéma, la compaction et les requêtes « time travel ».
Avantages :
- Transactions ACID : Garantissent la cohérence lors de lectures/écritures concurrentes.
- Évolution de schéma : Ajout ou modification de colonnes sans réécriture complète du jeu de données.
- Time Travel : Interroger des versions historiques de vos données.
- Optimisations de performance : Data skipping et compaction réduisent le temps de scan.
Hive sur AWS EMR avec S3 comme entrepôt de données
Hive est un framework d’entrepôt de données éprouvé, conçu pour l’analytique batch à grande échelle. Sur AWS, Hive peut s’exécuter sur EMR, avec S3 comme couche de stockage sous-jacente.
Fonctionnement sur AWS :
- Stockage des données : Les tables sont enregistrées sous forme de fichiers dans S3, généralement en format Parquet ou ORC.
Exemple :
s3://my-hive-warehouse/sales/year=2024/month=10/day=15/part-0001.orc
- Métadonnées dans Glue Data Catalog : AWS Glue conserve les schémas et informations de partition que Hive utilise pour planifier les requêtes.
- Exécution des requêtes : Hive sur EMR exécute du HQL (Hive Query Language) sur les données S3, en mode batch (MapReduce ou Tez) ou interactif via Hive LLAP.
Avantages :
- Familiarité SQL : HQL est proche du SQL ANSI, ce qui facilite l’adoption par les analystes.
- Intégration AWS : Connexion directe avec S3, AWS Glue, Athena et Redshift Spectrum.
- Partitionnement : Réduit le volume de données scannées grâce au partition pruning.
- Efficacité des coûts : Facturation EMR à la seconde pour le temps d’exécution, les données restant dans S3.
Exemple : Sauvegarder des données dans S3 pour les requêtes Hive
Si vous avez un job Spark qui écrit dans S3 pour consommation par Hive :
# Exemple PySpark
df.write \
.mode("overwrite") \
.format("parquet") \
.partitionBy("year", "month", "day") \
.save("s3://my-hive-warehouse/sales")
Enregistrer la table dans Hive (via AWS Glue) :
CREATE EXTERNAL TABLE sales (
order_id STRING,
amount DECIMAL(10,2),
customer_id STRING
)
PARTITIONED BY (year INT, month INT, day INT)
STORED AS PARQUET
LOCATION 's3://my-hive-warehouse/sales';
Choisir entre Delta Lake et Hive sur AWS
Fonctionnalité | Delta Lake sur S3 + EMR | Hive sur S3 + EMR |
---|---|---|
Transactions | Support ACID | Aucune (cohérence éventuelle) |
Évolution de schéma | Oui | Limitée |
Langage de requêtes | Spark SQL | HQL (proche SQL) |
Requêtes historiques | Oui (time travel) | Non |
Idéal pour | Workloads streaming + batch | Analytique orientée batch |
Intégration AWS | Via Spark sur EMR | Native (Glue, Athena, Redshift) |
Recommandations
- Choisissez Delta Lake si vous avez besoin de streaming et batch dans le même pipeline, de changements fréquents de schéma, ou de garanties ACID sur S3.
- Choisissez Hive sur EMR si vous traitez de grands volumes batch et recherchez une intégration poussée avec AWS Glue, Athena et d’autres services AWS, tout en maintenant des coûts prévisibles.
Les deux options vous permettent de stocker des données brutes et traitées dans S3 et de les interroger directement, mais elles répondent à des besoins opérationnels et analytiques différents.
Table of Contents
- Delta Lake sur AWS S3
- Hive sur AWS EMR avec S3 comme entrepôt de données
- Exemple : Sauvegarder des données dans S3 pour les requêtes Hive
- Choisir entre Delta Lake et Hive sur AWS
- Recommandations
Trending
Table of Contents
- Delta Lake sur AWS S3
- Hive sur AWS EMR avec S3 comme entrepôt de données
- Exemple : Sauvegarder des données dans S3 pour les requêtes Hive
- Choisir entre Delta Lake et Hive sur AWS
- Recommandations