gpt4 book ai didi

hadoop - 如何理解 Flink 中的流表?

转载 作者:行者123 更新时间:2023-12-02 20:14:53 25 4
gpt4 key购买 nike

我很难理解 Flink 中的流表。我可以理解 Hive,将固定的静态数据文件映射到“表”,但是如何体现基于流数据构建的表?
例如,每 1 秒,有 5 个具有相同结构的事件被发送到 Kafka 流:

{"num":1, "value": "a"} 
{"num":2, "value": "b"}
....
基于它们构建的动态表是什么样的? Flink 将它们全部消耗并将它们存储在某个地方(内存、本地文件、hdfs 等)然后映射到一个表?一旦“变压器”完成处理这 5 个事件,然后清除数据并用 5 个新事件重新填充“表”?
任何帮助表示赞赏...

最佳答案

这些动态表不一定存在于任何地方——它只是一种抽象,可能会或可能不会具体化,具体取决于正在执行的查询的需要。例如,执行简单投影的查询SELECT a, b FROM events可以通过简单地通过无状态 Flink 管道流式传输每个记录来执行。
此外,Flink 不会在 mini-batch 上运行——它一次处理每个事件。因此,任何地方都没有物理“表”或部分表。
但是有些查询确实需要一些状态,也许很少,例如SELECT count(*) FROM events它只需要一个计数器,而像SELECT key, count(*) FROM events GROUP BY key将使用 Flink 的键分区状态(分片键值存储)来保存每个键的当前计数器。集群中的不同节点将负责处理不同键的事件。
正如“普通”SQL 将一个或多个表作为输入,并生成一个表作为输出一样,流式 SQL 将一个或多个流作为输入,并生成一个流作为输出。例如,SELECT count(*) FROM events将产生流 1 2 3 4 5 ...作为其结果。
YouTube上有一些关于Flink SQL的很好的介绍:https://www.google.com/search?q=flink+sql+hueske+walther ,并且github上有培训资料,有幻灯片和练习:https://github.com/ververica/sql-training .

关于hadoop - 如何理解 Flink 中的流表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64588734/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com