首页 > 解决方案 > Apache Flink 中 DataStream 和 Table API 的区别

问题描述

我是 Apache Flink 的新手,想了解 DataStream 和 Table API 之间的用例。请帮助我了解何时选择 Table API 而不是 DataStream API。

据我了解,可以使用 Table API 完成的事情也可以使用 DataStream API 完成。两种 API 有何不同?

标签: apache-flinkflink-streamingflink-sql

解决方案


Table API 是一种统一批处理和流处理的关系 API。可以对静态批处理数据或连续流数据运行相同的查询。Table API 类似于 SQL。查询被优化并转换为DataSet(批处理)或DataStream(流)程序,即Table API 查询作为DataStream 程序执行。您可以在用户定义的函数中实现很多自定义逻辑,但 Table API 以关系操作(过滤、投影、连接、聚合)为中心。因此,Table API 主要用于 ETL/数据管道或数据分析应用程序也就不足为奇了。

DataStream API 是一种用于实现流处理应用程序的 API,并且更通用。大多数逻辑是作为 Java 或 Scala 类实现的。流程函数公开时间和状态,它们是任何类型的流应用程序的基本构建块。除了数据管道和分析之外,您还可以使用 DataStream API 实现事件驱动的应用程序。

如果您可以使用 Table API 实现逻辑,那就去吧。该程序将更容易和更简洁。如果您需要更多控制并且有很多自定义逻辑,请使用 DataStream API。顺便说一句,您可以轻松混合和匹配这两个 API,因为 aDataStream可以轻松转换为 a Table,反之亦然。


推荐阅读