Flink分层 api| 青训营笔记

272 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的第13天

我们青训营大数据的老师把提交的时间往后面拖了一天,本来想直接摆烂的我,又起床来补习了,学!开学!继续看看关于Flink的内容

分层 api

image.png 最底层级的抽象仅仅提供了有状态流,它将通过过程函数(Process Function) 被嵌入到 DataStream API 中。底层过程函数(Process Function) 与 DataStream API 相集成,使其可以对某些特定的操作进行底层的抽象,它允许用户可以自由地处理 来自一个或多个数据流的事件,并使用一致的容错的状态。除此之外,用户可以注 册事件时间并处理时间回调,从而使程序可以处理复杂的计算。
嘶,等等,有状态流是啥?

有状态流

所有数据的产生都可以看做连续的事件流\

用户与网站或手机APP应用产生的互动,订单的信息,服务器产生的日志或者传感器测量等等,统统都可以算是事件流。事实上,很难找到一个一次性生成有限并且完整的数据集的例子。有状态流处理是用于处理无界事件流的应用程序设计模式,适用于公司IT基础结构中的许多不同用例\

实际上,大多数应用并不需要上述的底层抽象,而是针对核心 API(Core APIs) 进行编程,比如 DataStream API(有界或无界流数据)以及 DataSet API(有界数据 集)。这些 API 为数据处理提供了通用的构建模块,比如由用户定义的多种形式的转换(transformations),连接(joins),聚合(aggregations),窗口操作(windows) 等等。DataSet API 为有界数据集提供了额外的支持,例如循环与迭代。这些 API 处理的数据类型以类(classes)的形式由各自的编程语言所表示。

Table API 是以表为中心的声明式编程,其中表可能会动态变化(在表达流数据 时)。Table API 遵循(扩展的)关系模型:表有二维数据结构(schema)(类似于 关系数据库中的表),同时 API 提供可比较的操作,例如 select、project、join、group-by、 aggregate 等。Table API 程序声明式地定义了什么逻辑操作应该执行,而不是准确地 确定这些操作代码的看上去如何。
尽管 Table API 可以通过多种类型的用户自定义函数(UDF)进行扩展,其仍不 如核心 API 更具表达能力,但是使用起来却更加简洁(代码量更少)。除此之外, Table API 程序在执行之前会经过内置优化器进行优化。


学习路漫漫,记笔记也好累,大家加油呀!