简述
CloudCanal 最近对于全周期数据流动进行了初步探索,打通了Hive 目标端的实时同步,为实时数仓的构建提供了支持,这篇文章简要做下分享。
- 基于临时表的增量合并方式
- 基于 HDFS 文件写入方式
- 临时表统一 Schema
- 任务级的临时表
基于临时表的增量合并方式
Hive 目标端写入方式和 Doris 相似,需要在目标表上额外添加一个 __op(0:UPSERT,1:DELETE)字段作为标记位,实际写入时会先将源端的变更先写入临时表,最终合并到实际表中。
CloudCanal 的设计核心在于,每个同步表对应两张临时表,通过交替合并的方式,确保在一张临时表进行合并时,另一张能够接收新变更,从而提升同步效率和并发性。
Hive 提供了两种合并方式:INSERT OVERWRITE(所有版本均支持),MERGE INTO(Hive 2.2.0 之后支持且需要是 ACID 表)
-- INSERT OVERWRITE 语法
INSERT OVERWRITE [LOCAL] DIRECTORY directory1
[ROW FORMAT row_format] [STORED AS file_format]
S