Apache Hudi adalah framework data lake yang memungkinkan Anda memperbarui dan menghapus data di sistem file yang kompatibel dengan Hadoop, serta mengonsumsi data yang berubah.
Jenis tabel
Hudi mendukung jenis tabel berikut:
-
Copy on Write
Data disimpan dalam format Parquet. Setiap pembaruan menghasilkan versi baru file selama operasi penulisan.
-
Merge on Read
Data disimpan dalam kombinasi format penyimpanan kolom (columnar), seperti Parquet, dan format penyimpanan berbasis baris (row-based), seperti Avro. Data dasar disimpan dalam format kolom, sedangkan data inkremental disimpan dalam format berbasis baris. Data inkremental dicatat ke file berbasis baris dan dikompaksi sesuai kebutuhan untuk menghasilkan versi baru file kolom.
Tabel berikut menjelaskan perbedaan antara kedua jenis tabel tersebut.
|
Titik perbedaan |
Copy on Write |
Merge on Read |
|
Data latency |
Tinggi |
Rendah |
|
Query latency |
Rendah |
Tinggi |
|
Update cost (I/O) |
Tinggi (Setiap pembaruan membuat versi baru file selama operasi penulisan.) |
Rendah (Data yang diperbarui ditambahkan ke Delta log.) |
|
Ukuran file Parquet |
Kecil |
Besar |
|
Write amplification |
Tinggi |
Rendah (tergantung pada kebijakan merge) |
Jenis kueri
Hudi mendukung tiga jenis kueri berikut:
-
Snapshot queries
Mengambil snapshot terbaru dari commit tertentu. Untuk tabel Merge on Read, Hudi menggabungkan data dasar dalam penyimpanan kolom dan log waktu nyata secara online selama snapshot queries. Untuk tabel Copy on Write, Hudi dapat melakukan kueri langsung terhadap versi terbaru data dalam format Parquet.
Kedua jenis tabel—Copy on Write dan Merge on Read—mendukung snapshot queries.
-
Incremental queries
Mengambil data terbaru yang ditulis setelah commit tertentu.
Kedua jenis tabel—Copy on Write dan Merge on Read—mendukung incremental queries.
-
Read-optimized queries
Hanya mengambil data terbaru dalam cakupan tertentu sebelum commit tertentu. Read-optimized queries merupakan snapshot queries yang dioptimalkan khusus untuk tabel Merge on Read. Jenis kueri ini mengurangi query latency akibat penggabungan log secara online dengan mengorbankan ketepatan waktu data.
Tabel berikut menjelaskan perbedaan antara snapshot queries dan read-optimized queries.
|
Titik perbedaan |
Snapshot query |
Read-optimized queries |
|
Data latency |
Rendah |
Tinggi |
|
Query latency |
Tinggi untuk tabel Merge on Read |
Rendah |
Skenario
-
Near real-time ingestion
Hudi dapat digunakan untuk menyisipkan, memperbarui, dan menghapus data. Anda dapat mengonsumsi log dari Kafka dan Log Service ke Hudi secara waktu nyata, serta menyinkronkan pembaruan data dari log biner database ke Hudi secara waktu nyata.
Hudi mengoptimalkan format file yang dihasilkan selama proses penulisan data guna mengatasi masalah file kecil di Hadoop Distributed File System (HDFS). Dalam hal ini, Hudi lebih kompatibel dengan HDFS dibandingkan solusi data lake tradisional lainnya.
-
Near real-time analytics
Hudi mendukung berbagai mesin analitik data, seperti Hive, Spark, Presto, dan Impala. Hudi bersifat ringan dan tidak bergantung pada layanan tambahan.
-
Incremental data processing
Hudi mendukung incremental queries. Anda dapat menjalankan pekerjaan Spark Streaming untuk melakukan kueri terhadap data terbaru yang ditulis setelah commit tertentu. Hudi memungkinkan konsumsi data yang berubah di HDFS, yang dapat dimanfaatkan untuk mengoptimalkan arsitektur sistem yang ada.