我是 Apache Flink 的新手,想了解 DataStream 和 Table API 之间的用例。请帮助我了解何时选择 Table API 而不是 DataStream API。
据我了解,可以使用 Table API 完成的事情也可以使用 DataStream API 完成。两种 API 有何不同?
我是 Apache Flink 的新手,想了解 DataStream 和 Table API 之间的用例。请帮助我了解何时选择 Table API 而不是 DataStream API。
据我了解,可以使用 Table API 完成的事情也可以使用 DataStream API 完成。两种 API 有何不同?
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
,反之亦然。