首先,Hudi表可以支持多种数据类型,如
(1)Merge-On-Read(MOR-读时合并);
(2)Copy-On-Write(COW-写时复制);
其次,区别如下:
(1)MOR,写入快,适用于源端数据快速接入ODS层,也就是常说的贴源层的场景;
(2)COW,读取快,适用于从贴源层取数据,经过处理后在存储至标准层的场景;
最后,对MOR方式存储时产生的三种格式进行简要总结。
当hudi表按照MOR格式新建以后,会默认生成3个表,如新建 hudi_os_dev表,则会生成
- 常规类型:hudi_os_dev
- ro类型:hudi_os_dev_ro :主要优化读取性能,适用于读取操作频繁的场景
- rt类型:hudi_os_dev_rt:主要优化数据写入和实时同步,适用于需要快速写入和实时数据同步的场景。
ro表和rt表区别:
- ro 表全称 read oprimized table,对于 MOR 表同步的 xxx_ro 表,只暴露压缩后的 parquet。其查询方式和COW表类似。设置完 hiveInputFormat 之后 和普通的 Hive 表一样查询即可;
- rt表示增量视图,主要针对增量查询的rt表;
- ro表只能查parquet文件数据, rt表 parquet文件数据和log文件数据都可查;