category

DatabaseMachine learningKuberneteseCommerceCloudWeb Application

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 :

  1. 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

  1. 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.
  2. 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 :

  1. 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

  1. 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.
  2. 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 + EMRHive sur S3 + EMR
TransactionsSupport ACIDAucune (cohérence éventuelle)
Évolution de schémaOuiLimitée
Langage de requêtesSpark SQLHQL (proche SQL)
Requêtes historiquesOui (time travel)Non
Idéal pourWorkloads streaming + batchAnalytique orientée batch
Intégration AWSVia Spark sur EMRNative (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


Trending

Comparatif des bases de données serverless : Oracle, Azure, Redshift et AuroraOrchestration de Spark sur AWS EMR avec Apache Airflow — L’approche Low-OpsÉtude de cas : un système léger de détection d’intrusion avec OpenFaaS et PyTorchConstruire des clusters Kubernetes résilients avec Portworx Community EditionIntégrer Shopify dans une Application Web Next.js React