Data Lakes
Apache Hudi — inkrementální zpracování v data lake
Apache Hudi je navržený pro efektivní aktualizace dat v data lake. Ideální pro CDC pipeline s častými upserty.
Hudi — upserty v data lake
Uber vyvinul Hudi pro miliardy záznamů s častými aktualizacemi.
Dva typy tabulek
- Copy-on-Write — přepíše soubor; optimální pro čtení
- Merge-on-Read — delta logy; optimální pro zápis
hudi_opts = {
'hoodie.table.name': 'orders',
'hoodie.datasource.write.recordkey.field': 'order_id',
'hoodie.datasource.write.precombine.field': 'updated_at',
'hoodie.datasource.write.operation': 'upsert',
}
df.write.format("hudi").options(**hudi_opts)\
.mode("append").save("/data/hudi/orders")
# Inkrementální čtení
spark.read.format("hudi")\
.option("hoodie.datasource.query.type", "incremental")\
.load("/data/hudi/orders")
Shrnutí
Hudi je optimální pro CDC a časté aktualizace. CoW a MoR strategie vyvažují čtení vs zápis.