与hive相比
hudi的更新是记录级别的。hive是表或分区级别的,但凡有一条数据要更新,就需要重写整个表分区甚至整张表,而hudi是细化到单条记录的,为这些操作提供了数量级的优化。
与hbase相比
hbase是有排序的功能,这本身也可以理解为一种索引功能。hudi也有索引的数据结构,所以在应用的场景上来说,都可以用作实时数据处理。但是hudi可以利于hive的metastore,做到基于sql的实时处理。我们之前的做法是把批的sql逻辑拆解为java逻辑,利用hbase的实时更新的特性,做到数据的实时处理,而这些无疑大大增加的业务开发的难度。
增量处理(kafka)
hudi定位准实时处理,一方面我们需要用来实时查询一张表的最新数据,例如快照表的查询,另一方面,hudi也可以针对一段时间的增量数据进行处理,仅仅处理增量的更改,然后upsert或delete接下来的表。