Apache Flink中DataStream和Table API之间的区别

3

我刚接触Apache Flink,想了解DataStream和Table API之间的使用情况。请帮助我理解何时选择Table API而不是DataStream API。

据我所知,可以使用Table API完成的事情也可以使用DataStream API完成。这两个API有什么不同呢?

1个回答

19
表格 API 是一种关系型 API,它统一了批处理和流处理。相同的查询可以运行在静态批量数据或持续的流式数据上。表格 API 类似于 SQL。查询被优化并转换为 DataSet(批量)或 DataStream(流媒体)程序,即表格 API 查询被执行为 DataStream 程序。您可以在用户定义的函数中实现大量自定义逻辑,但表格 API 以关系操作(过滤、投影、连接、聚合)为中心。因此,表格 API 主要用于 ETL / 数据管道或数据分析应用程序。
DataStream API 是一种实现流式处理应用程序的通用 API。大多数逻辑是作为 Java 或 Scala 类实现的。处理函数公开时间和状态,这是任何类型的流应用程序的基本构建块。除了数据管道和分析外,您还可以使用 DataStream API 实现事件驱动的应用程序。
如果您可以使用表格 API 实现逻辑,请使用它。程序将更易于理解和更简洁。如果您需要更多控制并具有大量自定义逻辑,则使用 DataStream API。顺便说一下,您可以轻松混合和匹配两个 API,因为DataStream 可以轻松地转换为 Table,反之亦然。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接