关于 Flink Regular Join 与 TTL 的理解

网站建设2年前发布
7 00

对于流查询,Regular Join 的语法是最灵活的,它允许任何类型的更新(插入、更新、删除)输入表。,Regular Join 包含以下几种(以 L 作为左流中的数据标识,R 作为右流中的数据标识):,Flink SQL​:,输出结果解析​:,Flink SQL:,输出结果解析:,Flink SQL:,输出结果解析:,在 Regular Join 时 Flink 会将两条没有时间窗口限制的流的所有数据存储在 State 中,由于流是无穷无尽持续流入的,随着时间的不断推进,内存中积累的状态会越来越多。,针对这个问题,Flink 提出了空闲状态保留时间(Idle State Retention Time)的概念。通过为每个状态设置 Timer,如果这个状态中途被访问过,则重新设置 Timer;否则(如果状态一直未被访问,长期处于 Idle 状态)则在 Timer 到期时做状态清理。这样,就可以确保每个状态都能得到及时的清理,可以通过 table.exec.state.ttl 参数进行控制(注意:这同时也会对结果的准确性有所影响,因此需要合理的权衡)。

© 版权声明

相关文章