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

说明

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

内容

一、Flink 的技术栈

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

[Flink课程]---- 2.2 DataSet API & DataStream API & Table & SQL API 的对比_第1张图片

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

[Flink课程]---- 2.2 DataSet API & DataStream API & Table & SQL API 的对比_第2张图片

特性

(1)流处理API

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

(2)所写即所得

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

2、DataSet API

执行 Graph

[Flink课程]---- 2.2 DataSet API & DataStream API & Table & SQL API 的对比_第3张图片

特性

(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

 

 

你可能感兴趣的:(Flink)