您的位置:首页 > 数据库

[从0到1学习Flink]---- 2.2 DataSet API & DataStream API & Table & SQL API 的对比

2018-12-22 11:47 751 查看
版权声明:尊重原创,转载请标明,本文转自 https://blog.csdn.net/high2011/article/details/85199030

说明

      本文基于 Flink -1.6.0 版本进行整理和分析,如有不妥之处,敬请指正。

内容

一、Flink 的技术栈

图片来源:https://ci.apache.org/projects/flink/flink-docs-release-1.6/internals/components.html

[code]注意
Table API & SQL 统一了 DataStream API 和 DataSet API ,所以,如果没有特殊业务场景,建议多使用 Table API  &SQL .

 二、Flink 分层架构

图片来源:https://ci.apache.org/projects/flink/flink-docs-release-1.6/concepts/programming-model.html

说明

1、Table  API & SQL:  描述性API ,基于优化。

2、DataStream API: 提供了比  ProcessFunction 更丰富的API。

3、ProcessFunction:最底层的 API

 

三 、对比Flink 分层架构中的技术 Stack

1、DataStream API 

执行 的Graph

特性

(1)流处理API

  • 在Process Function基础上增加了了⼀一些内置Operators
  • Join, filter, project, coGroup, connect, window…

(2)所写即所得

  • 直接定义物理操作
  • 不经过优化器优化
     

2、DataSet API

执行 Graph

特性

(1)批处理API

  • 在Process Function基础上增加了了⼀一些内置Operators
  • Join, filter, project, coGroup, connect, …
  • sort, distinct, max, min, etc.

(2)经过Flink自带的优化器

  •    不一定有用

3、SQL

  • 批流统一
  • 基于关系代数的标准查询语⾔言
  • Apache Calcite优化

4、Table API  VS SQL

  Table API SQL e.g
流批统一 Y Y SELECT/AGG/WINDOW etc.
功能扩展性 Y N FlatAGG/Iteration/Column operation etc.
表达方式扩展性 Y N map/flatMap/ Row.flatten()/minus.intersect etc
编译检查
 
Y N Java / Scala

 

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: