All Products
Search
Document Center

E-MapReduce:Konektor Hudi

Last Updated:Aug 22, 2026

Hudi adalah framework data lake yang memungkinkan Anda memperbarui dan menghapus data di sistem file yang kompatibel dengan Hadoop serta mengonsumsi data yang berubah. E-MapReduce (EMR) Presto mengintegrasikan paket JAR terkait ke dalam plugin Hudi mandiri. Anda dapat menggunakan konektor EMR Hudi untuk menjalankan kueri terhadap tabel Copy on Write (COW) dan Merge on Read (MOR).

Informasi latar belakang

Untuk informasi selengkapnya tentang EMR Hudi, lihat Ikhtisar Hudi.

Prasyarat

Kluster Hadoop yang mencakup layanan Presto atau kluster Presto mandiri telah dibuat. Untuk informasi selengkapnya, lihat Buat kluster.

Batasan

  • Konektor Hudi hanya didukung oleh kluster Hadoop atau Presto EMR versi V3.38.0 atau yang lebih baru.
  • Untuk tabel COW, hanya kueri snapshot yang didukung.
  • Untuk tabel MOR, hanya kueri snapshot dan kueri yang dioptimalkan untuk pembacaan (read-optimized queries) yang didukung.
  • Kueri inkremental tidak didukung.

Konfigurasi konektor Hudi

Ubah konfigurasi konektor Hudi. Untuk informasi selengkapnya, lihat Ubah konektor bawaan.

Untuk melihat konfigurasi default konektor Hudi, buka halaman layanan Presto di Konsol EMR. Pada tab Configure, temukan bagian Service Configuration dan klik tab hudi.properties. Tabel berikut menjelaskan parameter tersebut. Sesuaikan nilai parameter sesuai kebutuhan bisnis Anda.
Parameter Deskripsi
hive.recursive-directories Mengaktifkan pembacaan data dari subdirektori lokasi tabel atau partisi. Ini mirip dengan properti hive.mapred.supports.subdirectories di Hive.
hive.metastore.uri URI untuk menghubungkan ke Hive Metastore menggunakan protokol Thrift.

Nilai default-nya dalam format thrift://<master-node-name>.cluster-24****:9083.

hive.config.resources Daftar file konfigurasi HDFS yang dipisahkan koma. File-file ini harus ada di semua host Presto.
Penting Konfigurasikan parameter ini hanya jika akses ke HDFS diperlukan.
hive.delta-table-enabled Menentukan apakah Presto dapat membaca tabel Delta Lake. Nilai yang valid adalah:
  • true (default): Presto dapat membaca tabel Delta Lake.
  • false: Presto tidak dapat membaca tabel Delta Lake.
hive.delta-compatible-mode-enabled Menentukan apakah mode kompatibilitas untuk tabel Delta Lake diaktifkan. Nilai yang valid adalah:
  • true (default): Mode kompatibilitas diaktifkan untuk tabel Delta Lake.
  • false: Mode kompatibilitas tidak diaktifkan untuk tabel Delta Lake.
hive.hdfs.impersonation.enabled Menentukan apakah impersonasi pengguna diaktifkan. Nilai yang valid adalah:
  • true: Impersonasi pengguna diaktifkan.
  • false (default): Impersonasi pengguna tidak diaktifkan.

Contoh

Tabel Hudi dapat disimpan sebagai tabel Hive eksternal. Anda dapat menggunakan konektor Hive untuk menjalankan kueri terhadap data di tabel Hudi. Untuk informasi tentang cara membuat tabel Hudi dan menyinkronkannya ke tabel Hive, lihat Integrasikan Hudi dengan Spark SQL dan Tulis data ke Hudi menggunakan Spark.

Contoh berikut menunjukkan cara menghasilkan dan menjalankan kueri terhadap data:
  1. Login ke kluster EMR dalam mode SSH. Untuk informasi selengkapnya, lihat Login ke kluster.
  2. Jalankan perintah berikut untuk membuka CLI Spark SQL:
    spark-sql --conf 'spark.serializer=org.apache.spark.serializer.KryoSerializer' \
    --conf 'spark.sql.extensions=org.apache.spark.sql.hudi.HoodieSparkSessionExtension'
    Jika output berisi informasi berikut, CLI Spark SQL telah terbuka:
    spark-sql>
  3. Jalankan perintah berikut untuk membuat tabel uji bernama emr_test:
    create table if not exists emr_test(
      id bigint,
      name string,
      price double
    ) using hudi
    options (
      type = 'mor',
      primaryKey = 'id,name'
    );
  4. Jalankan perintah berikut untuk memasukkan data uji:
    insert into emr_test select 1, 'a2', 10;
    insert into emr_test select 1, 'a1', 10;
    insert into emr_test select 2, 'a1', 20;
    Catatan EMR Spark SQL secara otomatis menyinkronkan data Hudi ke Data Lake Formation (DLF) atau Hive Metastore.
  5. Jalankan kueri terhadap data di client Presto.
    1. Jalankan perintah berikut untuk membuka client Presto:
      presto --server emr-header-1:9090 --catalog hudi --schema default --user hadoop
    2. Jalankan perintah berikut untuk menjalankan kueri terhadap tabel:
      select * from emr_test;
      Output berikut dikembalikan:
       _hoodie_commit_time | _hoodie_commit_seqno | _hoodie_record_key | _hoodie_partition_path |                            _hoodie_file_name                            | id | name | price
      ---------------------+----------------------+--------------------+------------------------+-------------------------------------------------------------------------+----+------+-------
       20211025145616      | 20211025145616_0_1   | id:1,name:a2       |                        | ac4ec1e6-528d-4189-bde6-d09e137f63f6-0_0-20-1604_20211025145616.parquet |  1 | a2   |  10.0
       20211025145629      | 20211025145629_0_1   | id:1,name:a1       |                        | ac4ec1e6-528d-4189-bde6-d09e137f63f6-0_0-48-3211_20211025145629.parquet |  1 | a1   |  10.0
       20211025145640      | 20211025145640_0_2   | id:2,name:a1       |                        | ac4ec1e6-528d-4189-bde6-d09e137f63f6-0_0-76-4818_20211025145640.parquet |  2 | a1   |  20.0
      (3 rows)
  6. Perbarui data di CLI Spark SQL.
    1. Jalankan perintah berikut untuk membuka CLI Spark SQL:
      spark-sql --conf 'spark.serializer=org.apache.spark.serializer.KryoSerializer' \
      --conf 'spark.sql.extensions=org.apache.spark.sql.hudi.HoodieSparkSessionExtension'
      Jika output berisi informasi berikut, CLI Spark SQL telah terbuka:
      spark-sql>
    2. Jalankan perintah berikut untuk memperbarui price pada baris yang id-nya 2:
      update emr_test set price = price + 20 where id = 2;
  7. Setelah pembaruan, jalankan kueri terhadap data di client Presto.
    1. Jalankan perintah berikut untuk membuka client Presto:
      presto --server emr-header-1:9090 --catalog hudi --schema default --user hadoop
    2. Jalankan perintah berikut untuk menjalankan kueri terhadap tabel:
      select * from emr_test;
      Output berikut dikembalikan:
       _hoodie_commit_time | _hoodie_commit_seqno | _hoodie_record_key | _hoodie_partition_path |                            _hoodie_file_name                            | id | name | price
      ---------------------+----------------------+--------------------+------------------------+-------------------------------------------------------------------------+----+------+-------
       20211025145616      | 20211025145616_0_1   | id:1,name:a2       |                        | ac4ec1e6-528d-4189-bde6-d09e137f63f6-0_0-20-1604_20211025145616.parquet |  1 | a2   |  10.0
       20211025145629      | 20211025145629_0_1   | id:1,name:a1       |                        | ac4ec1e6-528d-4189-bde6-d09e137f63f6-0_0-48-3211_20211025145629.parquet |  1 | a1   |  10.0
       20211025145640      | 20211025145640_0_2   | id:2,name:a1       |                        | ac4ec1e6-528d-4189-bde6-d09e137f63f6-0_0-76-4818_20211025145640.parquet |  2 | a1   |  40.0
      (3 rows)