其他
Flink X Hologres 构建企业级 Streaming Warehouse
摘要:本文整理自阿里云资深技术专家,阿里云 Hologres 负责人姜伟华(果贝),在 FFA 实时湖仓专场的分享。本篇内容主要分为四个部分:
实时数仓分层的技术需求
阿里云一站式实时数仓 Hologres 介绍
Flink x Hologres:天作之合
基于 Flink Catalog 的 Streaming Warehouse 实践
Tips:点击「阅读原文」查看原文视频&演讲 ppt
01
实时数仓分层的技术需求
在查询性能方面,由于是明细数据查询,所以在某些场景下不能满足 QPS 或延迟的要求。 因为没有分层,所以数据复用很困难,很难兼顾各方面的诉求。
延迟大。每一层的延迟都跟调度相关,随着层次越多,调度延迟越大。实时数仓也变成了准实时数仓。 不能完全复用离线方案。离线调度一般是小时级或天级,我们可以使用全量计算。但在分钟级调度时,必须做增量计算,否则无法及时调度。
02
阿里云一站式实时数仓 Hologres 介绍
它支持传统的实时数仓和 OLAP。 它支持 Serving(KV)场景,有非常高的 QPS 和很低的延迟。 它支持数据湖和阿里云离线数仓 MaxCompute 加速的能力。
03
Flink x Hologres:天作之合
第一,解决了传统中间层 Kafka 数据不易查、不易更新、不易修正的问题。Hologres 的每一层都可查、可更新、可修正。 第二,Hologres 的每一层都可以单独对外提供服务。因为每一层的数据都是可查的,所以数据的复用会更好,真正实现数仓分层复用的目标。 第三,Hologres 支持数据复用,模型统一,架构简化。目前,该方案已经有很多客户使用。通过 Flink+Hologres,实现实时数仓分层。
04
基于 Flink Catalog 的
Streaming Warehouse 实践
ODS 层、DWD 层、ODS 层的数据都存在 Hologres 中。 链路中所有的数据加工都是通过 Flink SQL 完成。在整个 ETL 链路中,用户不需要任何 Hologres SQL,直接写 Flink SQL 即可。 Flink 用户可以通过 Flink SQL 对每层中的 Hologres 数据进行数据探查(流模式和批模式都可以)。比方说,当我们发现 DWS 层的数据结果出现问题,需要查看哪层的结果有问题或逻辑有错误。此时,我们可以复用原来的 Flink SQL 来进行探查、定位或者数据重新消费。 Hologres 中的每层数据都可以对外提供查询和服务(通过 Hologres SQL)。
第一步,我们通过 Flink 的实时数仓,把数据实时同步到 Hologres 里,形成 ODS 层。 第二步,加工 DWD 层。将 DWD 层的数据写到 Hologres 里。在这个过程中,我们需要把订单表和订单支付表,合并成一张表,实现多路合并。与此同时,我们希望 orders 表关联商品品类表 product_catalog。 第三步,驱动下游计算,构建 DWS 层。以用户维度和商店维度,收集统计数据。比如用户每天的订单金额和商店每天的订单金额,从而形成一条完整的链路。 第四步,将 DWS 层的表推荐给系统使用。作为用户和商店的特征,用做推荐用途。 第五步,DWD 层的表能够直接用来做实时统计分析、统计产品、实时大屏、实时报表。
第一个 INSERT 语句是从 orders 表实时打宽后写入。这里用到了 Hologres 的维表关联能力。实时打宽后,写入目标表的部分字段。 第二个 INSERT 语句是从 orders_pay 表实时同步到同一张目标表,更新另外一些字段。
往期精选