apacheflink中datastream和表api的区别

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

我对apache flink不熟悉,希望了解datastream和表api之间的用例。请帮助我了解何时选择表api而不是数据流api。
据我所知,使用表api可以完成的事情也可以使用datastreamapi完成。这两种API有何不同?

oxosxuxt

oxosxuxt1#

表api是一个关系api,它统一了批处理和流处理。相同的查询可以在静态批处理数据或连续流数据上运行。表api类似于sql。查询被优化并转换成数据集(批处理)或数据流(流处理)程序,即表api查询作为数据流程序执行。您可以在用户定义的函数中实现许多自定义逻辑,但是表api以关系操作(过滤、投影、连接、聚合)为中心。因此,表api主要用于etl/数据管道或数据分析应用程序也就不足为奇了。
datastreamapi是实现流处理应用程序和更通用的api。大多数逻辑都实现为java或scala类。处理函数公开时间和状态,这是任何流应用程序的基本构建块。除了数据管道和分析之外,您还可以使用datastreamapi实现事件驱动的应用程序。
如果你能用表api实现逻辑,那就去做吧。程序将更简单、更简洁。如果需要更多的控件和大量的自定义逻辑,请使用datastreamapi。顺便说一下,您可以轻松地混合和匹配这两个API,因为 DataStream 可以很容易地转换成 Table 反之亦然。

相关问题