近实时计算概述
- 近实时计算:在5-30分钟的延迟周期内对数仓数据进行增量计算,实现常驻折中的成本方案。
- 实时性计算引擎:Spark/Flink,资源类型分为临时和常驻,成本随任务调度频率增加而提高。
Spark SQL 对 Hudi 表的操作
- HudiCall 命令:从0.11.0版本开始支持,用于表的运维操作如压缩、聚类等。
- 增量读取:使用
call copy_to_temp_view
命令读取特定时间段的数据。
- 快照读取:使用
call copy_to_temp_view
命令读取特定时间点的数据。
涂鸦智能的近实时计算实践
- 架构图:ODS层 -> Kafka -> Spark Structured Streaming -> DW层。
- 调度系统:调度时间、业务时间和执行时间。
- 计算方式:ODS层采用增量计算,DW层全为增量计算。
宽表建设
- 实时方案:流表 + 流表:Regular Join、Interval Join;流表 + 维表:Temporal Join。
- 离线方案:两张表全量数据直接Join,存在任务失败和执行时间长的问题。
- 主键一致宽表:使用Hudi实现增量更新,减少全量数据读取成本。
- 非一致主键宽表:通过Hudi实现增量更新,避免数据不一致。
存在问题
- 非一致主键:每次更新需要扫描所有数据,可能影响性能。
- 资源竞争:与离线任务竞争资源可能导致任务延迟。
收益
- 成本与稳定性:相比实时方案,成本较低且任务更稳定;相比离线方案,虽然成本稍高但任务更稳定,能够极大提前下游业务产出时间。
- 开发学习成本:使用Spark SQL 开发数仓的学习成本较低。
未来展望
- 二级索引更新:优化数据管理。
- HudiMetrics:提升数据处理效率。
- Table Service Platform:增强平台功能。
总结
涂鸦智能通过Hudi + Spark SQL + 调度实现了近实时计算,解决了传统实时和离线计算的痛点,提高了数据处理效率和稳定性。未来将进一步优化宽表建设和平台功能,以更好地满足业务需求。