[Flink]Flink章2 Flink应用开发一

Flink的应用开发

1、首先创建Flink执行环境

2、构建数据源,添加数据源

数据源是Flink的数据流入口,目前flink已经包含了一些常用的数据源组件,可以直接从文件,文件目录,hdfs文件系统、socket、Kafka(需要单独引入flink-connector-kafka包)消息等源头中读取数据。

不过所有的数据源组件都要实现SourceFunction接口(SourceFunction是Flink stream source的根接口)

它继承自一个标记接口(空接口) Function 。

SourceFunction 定义了两个接口方法:

1、run :启动一个source,即对接一个外部数据源然后emit元素形成stream(大部分情况下会通过在该方法里运行一个while循环的形式来产生stream)。

2、cancel :取消一个source,也即将run中的循环emit元素的行为终止。

正常情况下,一个 SourceFunction 实现这两个接口方法就可以了。其实这两个接口方法也固化了一种实现模板。

对于一些需要打开和关闭的数据源可以继承RichSourceFunction抽象类,具体需要重写RichSourceFunction中open和close方法。

3、清洗转换数据

为了后续方便后续计算数据,拿到数据源的数据流后使用FlatMapFunction将数据流中的数据格式转成map。

4、构建窗口数据流并聚合计算

Flink的窗口可以是时间驱动的(Time Window,例如:每30秒钟),也可以是数据驱动的(Count Window,例如:每一百个元素)。一种经典的窗口分类可以分成:翻滚窗口(Tumbling Window,无重叠),滚动窗口(Sliding Window,有重叠),和会话窗口(Session Window,活动间隙)。

 

5、构建自定义SinkFunction实现自己的数据存储功能

继承RichSinkFunction 编写自己的SinkFunction,重写invoke(T),open()和close() 方法。

open()是在任务的线程启动的时候会调用,用于初始一些资源信息,比如打开连接。

close()对应的就可以实现关系连接资源的动作。

invoke(T)对流中的对象进行存储处理。

posted on 2019-09-20 14:00  深圳私塾  阅读(177)  评论(0编辑  收藏  举报

导航