flink学习(六)——flink api层次

前文我们写了一个WordCount程序体验了一下flink程序的编写。在本篇中我们详细学习下flink api的分类及其应用场景。

Flink’s API

flink提供了4个层次的api抽象:
在这里插入图片描述

  • 在最下层,就是有状态流式编程,它提供了ProcessFunctionAPI。flink在这个底层api上帮我们实现了最基础的流式处理能力,我们可以在上门进行有状态编程,并且我们可以自定义定时器,可以实现复杂的时间语义处理。(注意:ProcessFunction是嵌入到DataStreamAPI中使用的)。
  • 在core api层,flink提供了DataStreamAPI和DataSetAPI。这两个API提供了数据处理的基本操作:各种数据转化(map,flatmap,filter等等),分组,join,window,状态编程等等。我们在前文写的WordCount程序就是基于DataStreamAPI实现的。
  • Table API是基于表的声明式dsl。它与DataStream区别主要在以下几个方面:
    1. 遵循关系型数据模型,自带schema,提供了类sql操作,如select,project,join,group-by等等。
    2. 声明式api,指定数据处理逻辑,不指定代码实现逻辑
    3. 可实现udf,但是表达力不如core api
    4. 在执行前,计划器会优化执行逻辑
    5. Table可与DataStream/DataSet无缝转化。
  • flink提供的最高层api是flink-sql。它的抽象层次与Table API类似,但是允许用户直接写sql便可以执行job,而无需会写java或scala代码。

这四层关系很好理解,简单总结一下,主要是有以下两点:

1. 越往上层,开发人员写的代码越简洁,面向的开发人员越广。

2. 越往上层,处理的数据越结构化,功能灵活性越低。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值