Apache Hudi adalah format penyimpanan data lake yang mendukung pembaruan, penghapusan, dan konsumsi data yang berubah pada sistem file Hadoop.
Jenis tabel Hudi
Hudi mendukung dua jenis tabel berikut:
-
Copy On Write
Menyimpan data dalam format file Parquet. Pembaruan pada tabel Copy On Write memerlukan operasi menulis ulang.
-
Merge On Read
Menyimpan data dasar dalam format kolom (Parquet) dan data inkremental dalam format berbasis baris (Avro). Operasi kompaksi secara berkala menggabungkan data inkremental ke dalam file kolom berdasarkan kebijakan yang dapat dikonfigurasi.
Tabel berikut membandingkan kedua jenis tabel tersebut.
|
Trade-off |
Copy On Write |
Merge On Read |
|
Data Latency |
Tinggi |
Rendah |
|
Query Latency |
Rendah |
Tinggi |
|
Update cost (I/O) |
Tinggi (menulis ulang seluruh file Parquet) |
Rendah (menambahkan ke delta logs) |
|
Parquet File Size |
Kecil (overhead I/O pembaruan tinggi) |
Besar (overhead pembaruan rendah) |
|
Write Amplification |
Tinggi (amplifikasi tulis tinggi) |
Rendah (bergantung pada kebijakan merge) |
Jenis kueri Hudi
Hudi mendukung tiga jenis kueri berikut:
-
Snapshot Queries
Mengambil data dari snapshot commit terbaru. Untuk tabel Merge On Read, kueri snapshot menggabungkan data kolom dasar dengan log waktu nyata. Untuk tabel Copy On Write, kueri snapshot mengembalikan versi terbaru dari data Parquet.
Kedua jenis tabel, Copy On Write dan Merge On Read, mendukung jenis kueri ini.
-
Incremental Queries
Mengambil data yang ditulis setelah commit tertentu.
Kedua jenis tabel, Copy On Write dan Merge On Read, mendukung jenis kueri ini.
-
Read Optimized Queries
Mengembalikan data terkompaksi paling baru. Untuk tabel Merge On Read, jenis kueri ini mengurangi latensi dengan melewatkan penggabungan log data secara online, dengan mengorbankan kesegaran data.
Tabel berikut membandingkan jenis-jenis kueri tersebut.
|
Trade-off |
Snapshot Queries |
Read Optimized Queries |
|
Data Latency |
Rendah |
Tinggi |
|
Query Latency |
Tinggi untuk tabel Merge On Read |
Rendah |
Skenario
-
Ingesti data hampir waktu nyata
Hudi mendukung operasi insert, update, dan delete. Anda dapat mengingesti data log dari layanan seperti Kafka dan Simple Log Service (SLS) ke Hudi secara waktu nyata. Hudi juga mendukung sinkronisasi waktu nyata data perubahan dari binary logging (binlog) database.
Hudi mengoptimalkan file kecil yang dihasilkan selama penulisan data. Hal ini membuat Hudi lebih efisien di HDFS dibandingkan format file tradisional.
-
Analitik data hampir waktu nyata
Hudi bekerja dengan berbagai mesin analitik, termasuk Hive, Spark, Presto, dan Impala. Sebagai format file, Hudi tidak memerlukan proses layanan tambahan, sehingga ringan.
-
Pemrosesan data inkremental
Hudi mendukung kueri inkremental, yang memungkinkan Anda menggunakan Spark Streaming untuk mengambil data yang berubah setelah commit tertentu dan mengonsumsi data yang berubah dari HDFS.