Tous les produits
Search
Centre de documentation

E-MapReduce:Accéder aux données Delta Lake et Hudi depuis Hive

Dernière mise à jour :Aug 09, 2026

Hive ne peut pas écrire de données dans Delta Lake ou Apache Hudi, mais il permet d'interroger des données dans ces deux formats via des tables externes. Cette rubrique explique comment utiliser Hive dans un cluster E-MapReduce (EMR) pour interroger des données Delta Lake et Hudi.

Prérequis

Avant de commencer, assurez-vous :

  • D'avoir un cluster avec les services Hive, Delta Lake et Hudi installés. Pour plus d'informations, consultez la section Créer un cluster.

  • D'être connecté au cluster. Pour plus d'informations, consultez la section Se connecter à un cluster.

Limitations

Pour lire des données Hudi avec Hive, votre cluster doit respecter les exigences de version suivantes.

Version EMR Accès Hive à Hudi
V3.36.0 et versions mineures ultérieures Pris en charge
V5.2.0 et versions mineures ultérieures Pris en charge
Versions antérieures Non pris en charge. Utilisez Spark ou Flink pour interroger les données Hudi.

Interroger des données Delta Lake avec Hive

Hive peut lire les tables Delta Lake créées dans Spark. Les étapes suivantes détaillent la création d'une table Delta Lake dans Spark, l'insertion de données, puis leur interrogation depuis Hive.

Étape 1 : Créer une table Delta Lake dans Spark

  1. Ouvrez l'interface CLI de Spark.

    spark-sql
  2. Créez une table Delta Lake nommée delta_table.

    create table delta_table (id int) using delta;
  3. Insérez des données dans la table.

    insert into delta_table values 0,1,2,3,4;
  4. Vérifiez les données en interrogeant la table dans Spark.

    select * from delta_table;

    Le résultat ressemble à ceci :

    2
    3
    4
    0
    1
    Time taken: 1.847 seconds, Fetched 5 row(s)

Étape 2 : Interroger des données Delta Lake dans Hive

  1. Ouvrez l'interface CLI de Hive.

    hive
  2. (Facultatif) Inspectez les métadonnées de la table.

    desc formatted delta_table;
  3. Interrogez la table Delta Lake.

    select * from delta_table;

    Le résultat ressemble à ceci :

    OK
    2
    3
    4
    0
    1
    Time taken: 1.897 seconds, Fetched: 5 row(s)

    Les données renvoyées par Hive correspondent à celles de la table Delta Lake dans Spark, ce qui confirme que Hive lit correctement les données Delta Lake.

Interroger des données Hudi avec Hive

Important

Seuls Spark ou Flink peuvent écrire des données dans Hudi. Hive prend uniquement en charge la lecture.

Étape 1 : Préparer les données Hudi à l'aide de Spark

Avant d'interroger les données depuis Hive, créez et remplissez une table Hudi à l'aide de Spark SQL.

Démarrer Spark SQL

La commande de démarrage dépend des versions de Spark et de Hudi dans votre cluster.

  • Pour Spark 2 ou Spark 3 avec Hudi antérieur à la version 0.11 :

    spark-sql \
    --conf 'spark.serializer=org.apache.spark.serializer.KryoSerializer' \
    --conf 'spark.sql.extensions=org.apache.spark.sql.hudi.HoodieSparkSessionExtension'
  • Pour Spark 3 avec Hudi 0.11 ou version ultérieure :

    spark-sql \
    --conf 'spark.serializer=org.apache.spark.serializer.KryoSerializer' \
    --conf 'spark.sql.extensions=org.apache.spark.sql.hudi.HoodieSparkSessionExtension' \
    --conf 'spark.sql.catalog.spark_catalog=org.apache.spark.sql.hudi.catalog.HoodieCatalog'

Créer et remplir une table Hudi

  1. Créez une table Hudi nommée h0.

    create table h0 (
      id bigint,
      name string,
      price double,
      ts long
    ) using hudi
    tblproperties (
      primaryKey="id",
      preCombineField="ts"
    );
  2. Inspectez le schéma de la table.

    desc formatted h0;

    Le résultat ressemble à ceci :

    _hoodie_commit_time     string
    _hoodie_commit_seqno    string
    _hoodie_record_key      string
    _hoodie_partition_path    string
    _hoodie_file_name       string
    id                      bigint
    name                    string
    price                   double
    ts                      bigint

    Hudi ajoute automatiquement cinq champs de métadonnées à chaque table : _hoodie_commit_time, _hoodie_commit_seqno, _hoodie_record_key, _hoodie_partition_path et _hoodie_file_name. Ces champs apparaissent dans tous les résultats de requête utilisant select *.

  3. Insérez, mettez à jour et supprimez des données.

    -- insert
    insert into h0 values (1, 'a1', 10, 1000), (2, 'a2', 11, 1000);
    
    -- update
    update h0 set name = 'a1_new' where id = 1;
    
    -- delete
    delete from h0 where id = 1;
  4. Vérifiez les données. Après les opérations de mise à jour et de suppression, seule la ligne id=2 subsiste.

    Remarque

    h0 étant une table non partitionnée, _hoodie_partition_path est vide. Les cinq premières valeurs du résultat correspondent aux cinq champs de métadonnées Hudi.

    select id, name, price, ts from h0;

    Le résultat ressemble à ceci :

    2    a2    11.0    1000

    Pour inclure les champs de métadonnées Hudi dans le résultat, exécutez :

    select * from h0;

    Le résultat ressemble à ceci :

    4.820221130150621338    20221130150621338_0_1    id:2        40d6507e-0579-42ce-a10f-c5e07a3981e5-0_0-29-2007_2022113015062****.parquet    2    a2    11.0    1000

Pour plus d'exemples Spark pour Hudi, consultez le Guide Spark.

Étape 2 : Interroger des données Hudi dans Hive

Ouvrez l'interface CLI de Hive ou connectez-vous au serveur Thrift Hive via Beeline, puis interrogez la table Hudi.

-- select
select * from h0;

Étapes suivantes