🎯 Definicja
Apache Hudi (Hadoop Upserts Deletes and Incrementals) to format tabeli dla Data Lake, który umożliwia wykonywanie transakcji (ACID), aktualizacji (Upsert) i usuwania danych na plikach (co tradycyjnie w Data Lake było niemożliwe).
🔑 Kluczowe punkty
- Upserty: Hudi pozwala na szybką aktualizację rekordu w jeziorze danych (np. zmiana adresu klienta) bez przepisywania całego petabajta danych.
- Incremental Processing: Pozwala pobierać tylko te dane, które zmieniły się od ostatniego razu (jak CDC dla Data Lake).
- Copy-On-Write (COW) vs Merge-On-Read (MOR): Dwa tryby zapisu, balansujące między szybkością zapisu a szybkością odczytu.
📚 Szczegółowe wyjaśnienie
Stworzony przez Ubera, Hudi miał rozwiązać problem gigantycznych opóźnień w ich Data Lake’u. W “czystym” Hadoopie, aby zmienić jeden rekord w pliku Parquet, musiałeś wczytać cały plik i zapisać go ponownie. Hudi inteligentnie zarządza małymi plikami i indeksami, aby robić to wydajnie. Jest jednym z trzech wielkich formatów “Lakehouse” (obok Delta Lake i Iceberg). Hudi wyróżnia się najlepszą obsługą scenariuszy Streaming Ingestion (bardzo szybki zapis).
💡 Przykład zastosowania
Aplikacja Uber: Kierowca ciągle przesyła nową lokalizację GPS. Te dane trafiają do Kafki, a potem Hudi zapisuje je w Data Lake. Dzięki Hudi, analityk widzi “aktualną” pozycję kierowcy z opóźnieniem rzędu minut, a nie dni, i może wykonywać zapytania “Time Travel” (gdzie był kierowca 10 minut temu?).
📌 Źródła
👽 Brudnopis
- Silna integracja ze Sparkiem i Flinkiem.
- Zarządza “małymi plikami” (small files problem) poprzez automatyczne kompaktowanie.
- Skomplikowana konfiguracja w porównaniu do Iceberga, ale potężne możliwości tuningu.