flink table api使用什么后端?它需要关系数据库吗?

jdzmm42g  于 2021-06-21  发布在  Flink
关注(0)|答案(1)|浏览(367)

我对flink还比较陌生,并且试图理解可以使用流api/表api的适当用例。作为尝试理解的一部分
与流api一样,表api是否具有选择其可以使用的状态后端类型的灵活性?
什么是所有可用于表api的后端,它是否需要像mysql这样的外部数据存储?或者其他数据存储?
简言之,尝试了解表api使用的后端工作。

ih99xse1

ih99xse11#

就其本身而言,flink可能不是一个好的长期持久性商店。它更像一个处理系统。您需要在mysql/kafka/cassandra/s3/等文件中设置长期持久状态。
也就是说,有些计算需要内部状态簿记:当你这样做的时候

SELECT word, count(*) FROM words GROUP BY word

每个字使用某种整数 transient 。现在,您的工作将不会从机器故障和重新启动的安全。这就是为什么 state backend 存在。它可以保存它在计算中的位置(例如Kafka偏移量)以及计数所处的值。
所以,回答你的问题:
是的。内部blink query planner使用相同的代码(为执行计划规则的不同应用而保存)。在流式处理上下文中,或者在非常昂贵的批处理作业中(您可能希望为任务管理器使用便宜的aws spot示例,并且您对示例抢占非常健壮),这对我来说确实更有意义。此页可能会帮助您做出选择。
状态后端在我提供的链接中。现在,您可能希望从当前数据所在的位置读取数据,并在计算后进行处理。支持大量数据存储。对于一个非常大的盐粒,区别是:一些可以流数据:数据流连接器;有些不能:表/sql连接器。例如:mysql jdbc数据流连接器将只有一个接收器,而在表api中它可以既是接收器又是源。
作为旁注:状态后端确实是可查询的;但是imho更适合于调试目的。

相关问题