All Products
Search
Document Center

E-MapReduce:Akses data Delta Lake dan Hudi dari Hive

Last Updated:Mar 27, 2026

Hive tidak dapat menulis data ke Delta Lake atau Apache Hudi, tetapi dapat melakukan kueri terhadap data dari kedua format tersebut melalui tabel eksternal. Topik ini menjelaskan cara menggunakan Hive dalam kluster E-MapReduce (EMR) untuk melakukan kueri terhadap data Delta Lake dan Hudi.

Prasyarat

Sebelum memulai, pastikan Anda telah:

  • Kluster dengan layanan Hive, Delta Lake, dan Hudi yang telah terinstal. Untuk informasi selengkapnya, lihat Buat sebuah Kluster.

  • Anda telah berhasil masuk ke kluster. Untuk informasi selengkapnya, lihat Masuk ke kluster.

Batasan

Untuk menggunakan Hive membaca data Hudi, kluster Anda harus memenuhi persyaratan versi berikut.

Versi EMR Akses Hive ke Hudi
V3.36.0 dan versi minor setelahnya Didukung
V5.2.0 dan versi minor setelahnya Didukung
Versi sebelumnya Tidak didukung. Gunakan Spark atau Flink untuk melakukan kueri terhadap data Hudi sebagai gantinya.

Lakukan kueri data Delta Lake menggunakan Hive

Hive dapat membaca tabel Delta Lake yang dibuat di Spark. Langkah-langkah berikut memandu Anda membuat tabel Delta Lake di Spark, memasukkan data, dan melakukan kueri terhadap data tersebut dari Hive.

Langkah 1: Buat tabel Delta Lake di Spark

  1. Buka CLI Spark.

    spark-sql
  2. Buat tabel Delta Lake bernama delta_table.

    create table delta_table (id int) using delta;
  3. Masukkan data ke dalam tabel.

    insert into delta_table values 0,1,2,3,4;
  4. Verifikasi data dengan melakukan kueri terhadap tabel di Spark.

    select * from delta_table;

    Output-nya mirip dengan:

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

Langkah 2: Lakukan kueri data Delta Lake di Hive

  1. Buka CLI Hive.

    hive
  2. (Opsional) Periksa metadata tabel.

    desc formatted delta_table;
  3. Lakukan kueri terhadap tabel Delta Lake.

    select * from delta_table;

    Output-nya mirip dengan:

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

    Data yang dikembalikan oleh Hive sesuai dengan data dalam tabel Delta Lake di Spark, yang mengonfirmasi bahwa Hive berhasil membaca data Delta Lake.

Lakukan kueri data Hudi menggunakan Hive

Penting

Hanya Spark atau Flink yang dapat menulis data ke Hudi. Hive hanya mendukung akses read-only.

Langkah 1: Siapkan data Hudi menggunakan Spark

Sebelum melakukan kueri dari Hive, buat dan isi tabel Hudi menggunakan Spark SQL.

Jalankan Spark SQL

Perintah startup bergantung pada versi Spark dan Hudi di kluster Anda.

  • Untuk Spark 2 atau Spark 3 dengan Hudi versi sebelum 0.11:

    spark-sql \
    --conf 'spark.serializer=org.apache.spark.serializer.KryoSerializer' \
    --conf 'spark.sql.extensions=org.apache.spark.sql.hudi.HoodieSparkSessionExtension'
  • Untuk Spark 3 dengan Hudi 0.11 atau versi setelahnya:

    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'

Buat dan isi tabel Hudi

  1. Buat tabel Hudi bernama h0.

    create table h0 (
      id bigint,
      name string,
      price double,
      ts long
    ) using hudi
    tblproperties (
      primaryKey="id",
      preCombineField="ts"
    );
  2. Periksa skema tabel.

    desc formatted h0;

    Output-nya mirip dengan:

    _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 secara otomatis menambahkan lima bidang metadata ke setiap tabel: _hoodie_commit_time, _hoodie_commit_seqno, _hoodie_record_key, _hoodie_partition_path, dan _hoodie_file_name. Bidang-bidang ini muncul dalam semua hasil kueri yang menggunakan select *.

  3. Masukkan, perbarui, dan hapus data.

    -- 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. Verifikasi data. Setelah operasi update dan delete, hanya baris id=2 yang tersisa.

    Catatan

    h0 adalah tabel non-partisi, sehingga _hoodie_partition_path kosong. Lima nilai pertama dalam output berkorespondensi dengan lima bidang metadata Hudi.

    select id, name, price, ts from h0;

    Output-nya mirip dengan:

    2    a2    11.0    1000

    Untuk menyertakan bidang metadata Hudi dalam hasil, jalankan:

    select * from h0;

    Output-nya mirip dengan:

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

Untuk contoh Spark lainnya untuk Hudi, lihat Spark Guide.

Langkah 2: Lakukan kueri data Hudi di Hive

Buka CLI Hive atau hubungkan melalui Beeline ke Hive ThriftServer, lalu jalankan kueri terhadap tabel Hudi.

-- select
select * from h0;

Langkah selanjutnya