全部产品
Search
文档中心

E-MapReduce:Konektor Hudi

更新时间:Jul 06, 2025

Hudi adalah kerangka kerja data lake yang memungkinkan Anda untuk memperbarui dan menghapus data di sistem file yang kompatibel dengan Hadoop. Hudi juga mendukung penggunaan data yang telah berubah. E-MapReduce (EMR) Trino mengintegrasikan paket JAR terkait ke dalam komponen Hudi independen. Anda dapat menggunakan konektor EMR Hudi untuk menanyakan data dalam tabel Copy on Write dan Merge on Read.

Informasi Latar Belakang

Untuk informasi lebih lanjut tentang EMR Hudi, lihat Hudi.

Prasyarat

Cluster DataLake atau cluster Hadoop harus dibuat, dan layanan Presto dipilih. Untuk informasi lebih lanjut, lihat Buat Cluster.

Batasan

  • Hanya cluster DataLake dari semua versi dan cluster Hadoop dari EMR V3.38.0 ke atas yang mendukung konektor Hudi.

  • Untuk tabel Copy on Write, konektor Hudi hanya dapat menanyakan snapshot dari tabel tersebut.

  • Untuk tabel Merge on Read, konektor Hudi hanya dapat menanyakan snapshot dan hasil optimasi baca dari tabel tersebut dalam beberapa skenario tertentu. Berhati-hatilah saat menggunakan konektor Hudi untuk kueri dalam lingkungan produksi.

  • Kueri inkremental tidak didukung.

Konfigurasi Konektor Hudi

Ubah konfigurasi konektor Hudi sesuai kebutuhan. Untuk informasi lebih lanjut, lihat Ubah Konfigurasi Konektor Bawaan.

Gunakan Metadata Hive

Untuk melihat konfigurasi default konektor Hudi, ikuti langkah-langkah berikut: Di konsol EMR, buka tab Configure pada halaman layanan Trino. Pada tab Configure, klik tab hudi.properties. Sesuaikan parameter dalam tabel berikut sesuai kebutuhan bisnis Anda.

Parameter

Deskripsi

hive.metastore.uri

Uniform Resource Identifier (URI) yang digunakan untuk mengakses metastore Hive berdasarkan protokol Thrift.

  • Cluster DataLake dan custom: Atur parameter ini ke nilai dalam format thrift://master-1-1.cluster-24****:9083.

  • Cluster Hadoop: Atur parameter ini ke nilai dalam format thrift://emr-header-1.cluster-24****:9083.

hive.config.resources

File konfigurasi Hadoop Distributed File System (HDFS). Pisahkan nama file konfigurasi dengan koma (,). Anda harus memastikan bahwa file konfigurasi ada di semua host tempat Trino berjalan.

Penting

Anda harus mengonfigurasi parameter ini jika ingin mengakses HDFS.

  • Cluster DataLake dan custom: Nilai defaultnya adalah /etc/emr/hadoop-conf/core-site.xml,/etc/emr/hadoop-conf/hdfs-site.xml.

  • Cluster Hadoop: Nilai defaultnya adalah /etc/ecm/hadoop-conf/core-site.xml, /etc/ecm/hadoop-conf/hdfs-site.xml.

hive.hdfs.impersonation.enabled

Menentukan apakah akan mengaktifkan impersonasi pengguna. Nilai valid:

  • true: mengaktifkan impersonasi pengguna. Ini adalah nilai default.

  • false: menonaktifkan impersonasi pengguna.

Gunakan Metadata DLF Terpadu

Jika parameter Metadata diatur ke DLF Unified Metadata untuk cluster data Anda, Anda perlu mengonfigurasi konektor seperti Hive, Iceberg, dan Hudi. Dalam hal ini, kueri data tidak lagi bergantung pada cluster data Anda. Anda dapat mengonfigurasi parameter hive.metastore.uri sesuai kebutuhan bisnis Anda. Trino dapat langsung mengakses metadata Data Lake Formation (DLF) dalam akun yang sama.

Tabel berikut menjelaskan parameter yang digunakan untuk mengonfigurasi pusat penyimpanan metadata untuk data di data lake.
ParameterDeskripsiCatatan
hive.metastoreJenis metastore Hive.Parameter ini tetap menjadi DLF.
dlf.catalog.regionID wilayah di mana Data Lake Formation (DLF) diaktifkan.Untuk informasi lebih lanjut, lihat Wilayah dan Titik Akhir yang Didukung.
Catatan Pastikan nilai parameter ini sesuai dengan titik akhir yang ditentukan oleh parameter dlf.catalog.endpoint.
dlf.catalog.endpointTitik akhir layanan DLF.Untuk informasi lebih lanjut, lihat Wilayah dan Titik Akhir yang Didukung.
Disarankan untuk mengatur parameter dlf.catalog.endpoint ke titik akhir VPC DLF. Misalnya, jika Anda memilih wilayah China (Hangzhou), atur parameter dlf.catalog.endpoint ke dlf-vpc.cn-hangzhou.aliyuncs.com.
Catatan Anda juga dapat menggunakan titik akhir publik DLF. Jika Anda memilih wilayah China (Hangzhou), atur parameter dlf.catalog.endpoint ke dlf.cn-hangzhou.aliyuncs.com.
dlf.catalog.akModeMode AccessKey layanan DLF.Disarankan untuk mengatur parameter ini ke EMR_AUTO.
dlf.catalog.proxyModeMode proxy layanan DLF.Disarankan untuk mengatur parameter ini ke DLF_ONLY.
dlf.catalog.uidID akun Alibaba Cloud Anda.Untuk mendapatkan ID akun Alibaba Cloud Anda, kunjungi halaman Pengaturan Keamanan.

Contoh

Tabel Hudi berfungsi sebagai tabel eksternal Hive. Anda dapat menggunakan konektor Hive untuk menanyakan data dalam tabel Hudi. Untuk informasi lebih lanjut tentang cara membuat tabel Hudi dan menyinkronkan data dari tabel Hudi ke tabel Hive, lihat Integrasi Hudi dengan Spark SQL dan Penggunaan Dasar.

Berikut adalah contoh pembuatan tabel dan penanyakan data dalam tabel:

  1. Masuk ke cluster Anda dalam mode SSH. Untuk informasi lebih lanjut, lihat Masuk ke Cluster.

  2. Jalankan perintah berikut untuk memulai 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 dimulai:

    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 ke dalam tabel emr_test:

    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 tabel Hudi ke metastore Hive atau DLF.

  5. Tanyakan data dalam klien Trino.

    1. Jalankan perintah berikut untuk membuka CLI Trino:

      trino --server master-1-1:9090 --catalog hudi --schema default --user hadoop
    2. Jalankan perintah berikut untuk menanyakan data dalam tabel emr_test:

      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 dalam CLI Spark SQL.

    1. Jalankan perintah berikut untuk memulai 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 dimulai:

      spark-sql>
    2. Jalankan perintah berikut untuk memperbarui nilai price untuk entri data yang ID-nya 2:

      update emr_test set price = price + 20 where id = 2;
  7. Setelah pembaruan selesai, tanyakan data dalam klien Trino.

    1. Jalankan perintah berikut untuk membuka CLI Trino:

      trino --server master-1-1:9090 --catalog hudi --schema default --user hadoop
    2. Jalankan perintah berikut untuk menanyakan data dalam tabel emr_test:

      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)