flink1.18.0 flink维表join新思路

2024-01-08 01:54:16

以往常见实现 通过Lookup join来实现维表join

弊端:

? ? ? ? 虽然缓存可以减轻维表负担,但是如果事实表数据量很大,每秒千万条,维度表只有百万条,也就是说 你会看到大量的无法关联的数据仍然需要查询维度表.? cache缓存千万数据量内存压力又比较大, 那么怎么减轻维表数据库压力,还能做到低延迟.

新方法 借助? 新特性:?Configure Operator-level State TTL 配合 regular join + flinkCDC

以往双流join ; a join b,默认两侧状态都一直保留,虽然可以通过??table.exec.state.ttl? ?配置全局状态过期时间,但是不适合维度表join的场景.

新思路:?

a join b(维度表)? 既然新版本支持了算子级别的state,那么我们配置a的stateTTL是0,立马失效;

b的state配置为永久,即维度表数据永久不失效. 这里的b表需借助flinkCDC通过维表全量数据和后续增量过来,如果你们以前是hbase,这种方法不适合. 这样做到了状态存储了全量维表数据(前提维度表数据量不能太大)??

总结: 维表支持cdc 且数据量不会太大(state存的下 且性能够用) 则可以用方法2

问题:?

[FLINK-34001] doc of "Configure Operator-level State TTL" error - ASF JIRA

目前测试发现 文档写两侧配置ttl=0ms表示不保留状态,但是实际测试发现保留了两侧的状态,且永久保留,目前等待jira回复

文章来源:https://blog.csdn.net/qq_35515661/article/details/135416239
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。