Flink数据流编程模型

抽象层次

Flink 提供了不同层次的抽象给批/流编程模型使用。

在这里插入图片描述

  • 最底层的抽象是状态流(stateful streaming),它通过处理函数(Process Function)嵌入到数据流API(DataStream API )中。它允许用户自由处理来自一个或多个事件流,并具有一致的容错状态。另外你还可以自行注册基于事件时间和程序处理时间的回调,允许程序实现非常复杂的计算。
  • 实际应用中,大多数程序都不需要关心最底层的抽象,但是会针对核心API进行编程,例如使用数据流(DataStream)API的绑定/解绑流,数据集( DataSet)API的绑定数据集。这些常用API提供了用于构建数据处理程序通用的模块,比如用户定义的各式各样的数据转换、连接运算(joins)、聚合运算(aggregations)、窗口运算(windows)、状态运算(state)等。在这些API中处理的数据类型在各自的编程语言中表示为类。底层处理函数(Process Function)被集成到数据流(DataStream)API中,以使能够对某些特殊操作能够调用底层接口。数据集(DataSet )API提供了数据绑定操作额外的操作元语,例如循环(loops)、迭代(iterations)。
  • Table API定义的是以表为中心的领域语音(DSL),当表示流时,可以动态更改表。Table API遵循并扩展了关系模型:表(table)有模型定义( schema),类似于关系型数据库里面的表,并且API提供了类似的操作,比如select, project, join, group-by, aggregate等。Table API以声名的方式定义了逻辑操作而不是限定代码结构。Table API可以扩展大量的用户自定义函数,它虽然没有核心API(Core API)那么有表现力,但是其用起来更简洁,可以少写很多代码。另外,Table API程序在执行前会通过一些优化规则进行优化后执行。可以在表和数据流(DataStream)/数据集(DataSet)之间无缝转换,允许程序混合使用 Table API 、DataStream 和DataSet API。
  • Flink 提供的最高层级的抽象是SQL,这层抽象有点像Table api的语义定义和功能表达,但将程序表示为SQL查询表达式,SQL抽象也 Table API紧密协作,并且SQL 能够在Table API定义的表上执行。

DSL:领域特定语言(domain-specific language)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值