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/