关于Hudi调研的一些问题记录

最近因为想对业务数据处理架构的调整,想要实现对大数据的增量插入/更新的功能,通过调研,Apache Hudi可以实现这方面的功能,遂进行深入的学习。

hudi增量更新功能的实现方式:

1、COW(copy of write):只用列式(例如Parquet)进行数据存储,在写入数据过程中,执行同步合并,更新数据版本并重写数据文件。

2、MOR(merge of read):使用列式(例如Parquet 合并之后的数据) + 行式(avro 新增数据)两种格式进行数据存储。新数据记录到增量文件,然后同步或者异步的方式将增量数据和老数据合并到一块。

查询类型:

1、快照查询:

             查询最新的数据。

             如果是MOR,将合并最新的基文件(parquet文件)和增量文件(avro)的数据给出近乎实时的数据

             如果是COW,就直接读取现有的parquet文件即可(不理解的是,如果另一个进程正在写,读的时候怎么保证是最新的数据)。

2、增量查询:

             通过在查询时指定commit或者compaction的时间,可看到指定时间后写入表的最新数据。(我的理解,在你主动commit或者后台进行compaction的时候都会有一个时间记录(hudi里面叫timeline),对于增量查询,就是查询某个commit或者compaction之后的新录入进来的数据。)

3、读取优化查询:

             只提供基本文件(parquet)的数据读取。

综上,我的理解:

快照查询-查询的是近实时的数据。

增量查询-查询的是最新更新的数据。

读取优化查询-主要针对MOR模式,为了提高读取性能,只读取这个模式下的基文件(parquet)数据,列存储文件的数据不进行读取。

一些疑惑:

1、网上的一些介绍全部是概念性的东西,没有人举一个具体的例子来说明实际的操作和执行流程,这一点尤为蛋疼,理解起来不是很容易。

2、从官网和其他人的介绍来看,hudi好像只是一个类似于parquet的使用包,只要引用这个包来进行读写就可以了。

      但是我不理解的是,对于read of merge模式,他们说的后台进行数据合并是怎么实现的?理论上应该有一个hudi服务,来进行数据的管理和数据的后端合并,但是从各个介绍来看,没有人说需要搭建hudi服务。

 

等我做一些实际的实例操作,再来赘述。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值