首页 > 解决方案 > Apache Flink:Table API 状态是否可扩展?

问题描述

根据 Flink Table API Streaming Concepts,Table API 和 SQL 查询可能会由于状态大小的增长而失败。

状态大小:连续查询在无限流上进行评估,通常应该运行数周或数月。因此,连续查询处理的数据总量可能非常大。必须更新先前发出的结果的查询需要维护所有发出的行才能更新它们。例如,第一个示例查询需要存储每个用户的 URL 计数,以便能够增加计数并在输入表接收到新行时发送新结果。如果只跟踪注册用户,那么要维护的计数可能不会太高。但是,如果为非注册用户分配了唯一的用户名,则要维护的计数数量会随着时间的推移而增加,并最终可能导致查询失败。

Table API 和 SQL 在后台使用 DataStream API。

Table API / SQL 查询的状态不应该像 DataStream API 作业的状态一样扩展吗?

标签: apache-flinkflink-sql

解决方案


您认为 Flink 的 Table API 与 DataStream API 一样可扩展是正确的。尽管如此,任何给定的基础设施都具有有限的容量,并且编写为使用无界状态的 Flink 作业最终会在消耗完所有可用资源后崩溃。一些 Flink 用户每天处理 PB 级的数据,并期望他们的工作连续运行数周和数月,这只有关注这些问题才有可能。


推荐阅读