0

我对 Flink 相当陌生,并试图了解可以使用 Stream API/Table API 的适当用例。作为它的一部分,试图理解

  1. 像 Stream API 一样,Table API 是否可以灵活地选择它可以使用的状态后端类型?
  2. Table API 有哪些可用的后端,它是否需要任何外部数据存储,例如 My SQL?或任何其他数据存储?

简而言之,试图了解 Table API 使用的后端工作。

4

1 回答 1

1

Flink 本身可能不是一个好的长期持久存储。它更像是一个处理系统。您将希望在 MySQL/Kafka/Cas​​sandra/S3/等中拥有您的长期持久状态。

话虽这么说,一些计算需要内部状态簿记:当你这样做时

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

每个单词都使用某种整数瞬态。现在,您的工作将无法避免机器故障并重新启动。这就是state backend存在的原因。它可以保存它在计算中的位置(例如 Kafka 偏移量)以及计数所在的值。

所以,回答你的问题:

  1. 确实如此。内部 Blink 查询计划器使用相同的代码(执行计划规则的不同应用除外)。在流式上下文或非常昂贵的批处理作业中,这对我来说确实更有意义(您可能希望将廉价的 AWS Spot 实例用于任务管理器,并且您对实例抢占具有鲁棒性)。此页面可能会帮助您做出选择。

  2. 状态后端在我提供的链接中。现在,您可能想从您的数据当前所在的位置读取数据,并将进行后期计算。支持大量数据存储。有一个非常大的盐粒,区别是:一些可以流式传输数据:Datastream 连接器;有些不能:表/SQL 连接器。例如:一个 MySQL JDBC Datastream 连接器将只有一个接收器,而在 Table API 中它可能既是接收器又是源。


附带说明:状态后端确实是可查询的;但恕我直言更适合调试目的。

于 2020-07-29T10:22:28.170 回答