apache-flink - Apache Flink 中 DataStream 和 Table 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
,反之亦然。
推荐阅读
- c# - 基于 Owin 的身份验证 - 在 web api 中找不到“配置”方法
- python - 使用 pandas 将包含数组数组的数据帧附加到 h5 文件时使用哪种对象类型映射?
- sql-server - T SQL 更新使用 LAG 关键字“FROM”附近的语法不正确
- spring-boot - 在 Zipkin UI 中以红色显示错误请求的跟踪
- java - Spring Data REST:将一对多对一作为多对多关系返回
- c++ - 如何在字符串中添加整数?
- python-3.x - 如何在docker镜像python3.6中安装ifxpy模块
- xamarin.ios - 延迟订阅时 ObservableAsPropertyHelper 的初始值
- iis - FTP 服务器:如何在主动模式下发送对 SYST 等 FTP 命令的响应?
- javascript - 带有汇总的 CommonJS 语法