Apache Hudi adalah kerangka kerja danau data yang memungkinkan Anda memperbarui dan menghapus data dalam sistem file yang kompatibel dengan Hadoop. Hudi juga mendukung konsumsi data yang telah berubah.
Jenis tabel
Hudi mendukung jenis tabel berikut:
Copy on Write
Data disimpan dalam format Parquet. Setiap pembaruan membuat versi baru dari file selama operasi penulisan.
Merge on Read
Data disimpan dalam kombinasi format penyimpanan kolom, seperti Parquet, dan format penyimpanan baris, seperti Avro. Data dasar disimpan dalam format penyimpanan kolom, sedangkan data tambahan disimpan dalam format penyimpanan baris. Data tambahan dicatat ke file berbasis baris dan dikompresi sesuai kebutuhan untuk membuat versi baru dari file kolom.
Tabel berikut menjelaskan perbedaan antara jenis tabel.
Poin perbedaan | Copy on Write | Merge on Read |
Laten data | Tinggi | Rendah |
Laten kueri | Rendah | Tinggi |
Biaya pembaruan (I/O) | Tinggi (Setiap pembaruan membuat versi baru dari file selama operasi penulisan.) | Rendah (Data yang diperbarui ditambahkan ke log Delta.) |
Ukuran file Parquet | Kecil | Besar |
Amplifikasi tulis | Tinggi | Rendah (tergantung pada kebijakan penggabungan) |
Jenis kueri
Hudi mendukung tiga jenis kueri berikut:
Kueri Snapshot
Mengkueri snapshot terbaru dari commit tertentu. Untuk tabel Merge on Read, Hudi menggabungkan data dasar dalam penyimpanan kolom dan data log real-time secara online selama kueri snapshot. Untuk tabel Copy on Write, Hudi dapat mengkueri versi terbaru data dalam format Parquet.
Baik tabel Copy on Write maupun Merge on Read mendukung kueri snapshot.
Kueri Inkremental
Mengkueri data terbaru yang ditulis setelah commit tertentu.
Baik tabel Copy on Write maupun Merge on Read mendukung kueri inkremental.
Kueri Dioptimalkan untuk Pembacaan
Mengkueri hanya data terbaru dalam ruang lingkup tertentu sebelum commit tertentu. Kueri ini merupakan kueri snapshot yang dioptimalkan pada tabel Merge on Read. Jenis kueri ini dapat digunakan untuk mengurangi latensi kueri yang dihasilkan oleh penggabungan log data secara online, dengan mengorbankan ketepatan waktu kueri data.
Tabel berikut menjelaskan perbedaan antara kueri snapshot dan kueri dioptimalkan untuk pembacaan.
Poin perbedaan | Kueri snapshot | Kueri dioptimalkan untuk pembacaan |
Laten data | Rendah | Tinggi |
Laten kueri | Tinggi untuk tabel Merge on Read | Rendah |
Skenario
Ingest Data Hampir Real-Time
Hudi dapat digunakan untuk menyisipkan, memperbarui, dan menghapus data. Anda dapat mengambil data log dari Kafka dan Log Service ke Hudi secara real-time. Anda juga dapat menyinkronkan pembaruan data yang direkam dalam log biner database ke Hudi secara real-time.
Hudi mengoptimalkan format file yang dihasilkan selama proses penulisan data untuk menyelesaikan masalah yang disebabkan oleh file kecil dalam Sistem File Terdistribusi Hadoop (HDFS). Dalam aspek ini, Hudi lebih kompatibel dengan HDFS dibandingkan solusi danau data tradisional lainnya.
Analitik Data Hampir Real-Time
Hudi mendukung berbagai mesin analitik data, seperti Hive, Spark, Presto, dan Impala. Hudi ringan dan tidak bergantung pada proses layanan tambahan.
Pemrosesan Data Inkremental
Hudi mendukung kueri inkremental. Anda dapat menjalankan pekerjaan Spark Streaming untuk mengkueri data terbaru yang ditulis setelah commit tertentu. Hudi memungkinkan Anda mengonsumsi data yang telah berubah dalam HDFS. Anda dapat menggunakan fitur konsumsi ini untuk mengoptimalkan arsitektur sistem yang ada.