《Apache Flink 案例集(2022版)》——2.数据分析——快手-Flink SQL 在快手的扩展和实践(3) https://developer.aliyun.com/article/1228370
维表关联的攒批优化
维表关联的攒批优化是为了减少 RPC 的调用次数。原理是攒一批数据以后,调用维表的批量查询接口,语法上快手引入通用的 Mini-Batch hint,它有两个参数:一个表示多长时间攒一批,一个表示多少条数据攒一批。一个合法的 Mini-Batch hint 需要至少包含一个参数。快手将 hint 设计得很通用,希望它不仅可以用于维表关联,还可以用于聚合的攒批优化。
再看一个例子,需要打宽订单表,关联订单的客户信息。查询语句在 customers 维表后面跟一个 hint 表示 5 秒攒一批或 1 万条数据攒一批,这个优化在底层算子和设计的实现上,远比 SQL 语法的表达要复杂得多。
未来规划
未来,快手会在 Stream SQL 方向持续扩展功能,提升性能,达到降本增效的目的,以及探索更多场景下的状态兼容;流批一体方面,快手将会完善 Flink Batch SQL 的能力,增加推测执行、自适应查询等优化,提升 Batch SQL 的稳定性和性能,继续拓宽业务应用场景;在数据湖和实时数仓方面,会继续推动它们在更多业务场景下的落地。