Apache Flink 中 DataStream 与 Table API 的区别
Difference between DataStream and Table API in Apache Flink
我是 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/data 管道或数据分析应用程序也就不足为奇了。
DataStream API 是一个 API 来实现流处理应用程序并且更通用。大多数逻辑实现为 Java 或 Scala 类。流程功能公开时间和状态,这是任何类型的流应用程序的基本构建块。除了数据管道和分析之外,您还可以使用 DataStream API.
实现事件驱动的应用程序
如果您可以使用 Table API 实现逻辑,那就去做吧。该程序将更容易和更简洁。如果您需要更多控制并有很多自定义逻辑,请使用 DataStream API。顺便说一下,您可以轻松地混合和匹配两个 API,因为 DataStream
可以很容易地转换为 Table
,反之亦然。
我是 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/data 管道或数据分析应用程序也就不足为奇了。
DataStream API 是一个 API 来实现流处理应用程序并且更通用。大多数逻辑实现为 Java 或 Scala 类。流程功能公开时间和状态,这是任何类型的流应用程序的基本构建块。除了数据管道和分析之外,您还可以使用 DataStream API.
实现事件驱动的应用程序如果您可以使用 Table API 实现逻辑,那就去做吧。该程序将更容易和更简洁。如果您需要更多控制并有很多自定义逻辑,请使用 DataStream API。顺便说一下,您可以轻松地混合和匹配两个 API,因为 DataStream
可以很容易地转换为 Table
,反之亦然。