1、李劲松/阿里巴巴技术专家基于 Flink Dynamic Table 构建流批一体数仓业务痛点动态表流式数仓PLAN#2#3#4#5#1业务需求#1 1业务需求业务需求Streaming ETL搭建实时数仓搭建实时数仓Day ResultsWeek ResultsMonth ResultsJoinAggregationsODSDWDADS BOSS:快快快!给我看到实时的数据!即席查询与数据订正即席查询与数据订正JoinAggregationsODSDWD BOSS:我能不能随便查查数仓的数据?BOSS:有脏数据?清理下?Filter/ProjectDay ResultsWeek Result
2、sMonth ResultsIcebergHudiPresto/Spark/Hive即席查询Spark/Hive分区重刷新增实时业务指标新增实时业务指标JoinODSDWD BOSS:来,给我新增一些业务指标!IcebergPresto/Spark/HiveFilter/ProjectSpark/Hive分区重刷Day ResultsWeek ResultsMonth ResultsHybrid Source-Aggregations即席查询Hudi维表节省成本维表节省成本ODSDWD BOSS:成本太高了,给我省着点!IcebergPresto/Spark/HiveFilter/Projec
3、tSpark/Hive分区重刷Day ResultsWeek ResultsMonth ResultsHybrid Source-Aggregations即席查询HudiLookup JoinProject复用我们真的需要这么多系统吗?#2 2业务痛点业务痛点实时数仓痛点实时数仓痛点 Kafka 成本昂贵Kafka 只保留最近数据导出到 Hive?系统复杂度 Kafka 难以查询行存:几乎不可查询导出到 KV engine/OLAP,系统复杂度 流计算 难以使用各种 Changelog Kind,增量计算模型?“sink only accepts append-only messages”数据
4、怎么多了?手动去重?流批一体 难以达成流批割裂,数据、表结构和计算越行越远流批难以协作,比如 backfilling、流连接批维表workaroundworkaround:中间数据导出去:中间数据导出去HologresClickHouseIcebergHudi带给用户的复杂:Append Only&Upsert Primary Key&Timestamp 依赖 State 流与批 不一致的体验带给平台的复杂:运维成本:Maintain Servers 学习成本:用法各不相同 打通成本:不同系统难以打通#3 3动态表动态表RethinkRethink 流和批流和批Snapshot1Snapsho
5、t2Snapshot3Changelog(Binlog,WAL)流数据Database:统一流存储和批存储批数据数据仓库的流批一体存储:Database 的体验!动态表动态表:全新的:全新的FlinkFlink内置存储内置存储HologresDorisHudiClickhouseIcebergKafkaFlink 动态表 Snapshot+Log 满足所有 User Case 存储易用 直接查询DFS动态表:存储结构动态表:存储结构Distributed File System动态表存储Log QueueSinkStreaming Reading(Read Changes)Batch Read
6、ing(Read Snapshot)Lookup Join(Read Snapshot by Key)ColumnarMerge Tree动态表:流批一体动态表:流批一体 读取流读:读取 Log Changes批读:读取 Snapshot流批融合:Hybrid 读Lookup:支持点查 写入流写:持续插入批写:支持分区、支持Overwrite Lake StoreOn DFS,无服务,计算存储分离列存高性能分析Batch WriteStream WriteBatch ReadStream Read动态表:全面支持动态表:全面支持 SQLSQLCREATE TABLE user_behavior