[Flink学习课程]---- 2.2 DataSet API & DataStream API & Table & SQL API 的对比

版权声明:尊重原创,转载请标明,本文转自 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

Apache Flink: Stack

注意
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

Programming levels of abstraction

说明

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

 

 

没有更多推荐了,返回首页

私密
私密原因:
请选择设置私密原因
  • 广告
  • 抄袭
  • 版权
  • 政治
  • 色情
  • 无意义
  • 其他
其他原因:
120
出错啦
系统繁忙,请稍后再试