根据Flink Table API Streaming Concepts,由于状态大小的增加,Table API和SQL查询可能会失败。
状态大小::连续查询是对无限制流进行评估的,通常应运行数周或数月。因此,连续查询处理的数据总量可能非常大。必须更新先前发出的结果的查询需要维护所有发出的行,以便能够更新它们。例如,第一个示例查询需要存储每个用户的URL计数,以便能够增加计数并在输入表接收到新行时发出新结果。如果仅跟踪注册用户,则要维护的计数数量可能不会太高。但是,如果未注册的用户分配了唯一的用户名,则维护的计数数将随着时间的推移而增加,并最终可能导致查询失败。
Table API和SQL在后台使用DataStream API。
表API / SQL查询的状态不应该像DataStream API作业的状态那样扩展吗?
答案 0 :(得分:1)
您认为Flink的Table API与DataStream API具有相同的可扩展性是正确的。尽管如此,任何给定的基础架构都具有有限的容量,并且一旦写入Flink作业以使其使用无界状态,则它将耗尽所有可用资源,最终导致崩溃。一些Flink用户每天处理PB级数据,并期望他们的工作能够连续运行数周和数月,只有注意这些问题才有可能。