Flink的MySQL connector支持在temporal join中启用 Lookup Cache
<
https://ci.apache.org/projects/flink/flink-docs-release-1.13/docs/connectors/table/jdbc/#lookup-cache>
,您可以考虑采用这种方式实现,不过这种方式与您描述的操作过程存在一定区别:
1. 维表(即A表)数据不是在启动时全量加载的,而是在运行时动态加载的
2. 当维表中查询不到所需行时,会查询MySQL数据库
3. 数据过期或刷新是基于行的,而不是整个表
如果需要完全实现您所描述的操作,目前只能采用Flink DataStream自定义实现,不过我认为目前Flink MySQL的Lookup
Cache已经可以绝大程度的减少数据库访问,可以支撑大部分的Join场景,建议直接使用。
如果要启用Flink MySQL的Lookup Cache,可在with中增加如下参数:
1. lookup.cache.max-rows 缓存的最大行数
2. lookup.cache.ttl 缓存行的过期时间
--
Sent from:
http://apache-flink.147419.n8.nabble.com/