主页 > 新闻资讯 > 大数据学习:Flink API编程基础入门

大数据学习:Flink API编程基础入门

作者:张老师 浏览次数: 2021-03-10 17:32
作为现如今流处理的一大“干将”,Apache Flink正在受到越来越多企业的青睐,而作为大数据开发者,对于Flink这个框架,也需要更加熟练的掌握和运用。今天的大数据学习分享,我们先来讲讲,Flink API编程基础入门。

目前使用Flink 1.10版本开发批式和流式Job,在API层面来看,大部分还是比较统一的。

大数据学习:Flink API编程基础入门

Flink编程API设计

Flink编程API中,我们开发的数据处理Job程序,都是始于一个Source,对应的输入数据源,终于一个Sink,对应输出的存储系统,中间是各种丰富的处理算子。但是对于批式和流式编程API,从代码层面对应的抽象基本上是名称不同,具体逻辑功能比较一致:批式编程API对批式Job DAG中每个节点的抽象使用的是DataSet,而流式编程API中对应的是DataStream。

对于批式Job DAG中,DataSet的类设计体系:

相关的类都在包org.apache.flink.api.java.operators下面,主要分为4类:DataSource、DataSink、SingleInputOperator、TwoInputOperator。其中,DataSink并没有继承自DataSet,但是作为批式Job DAG的输出节点抽象。

在编写批式Job过程中,输入是一个DataSource(实际也是DataSet),处理中每经过一个转换操作(Transformation),都会生成一个新的类型的DataSet,这在API上看是统一的,实际底层稍微有一点不同。比如,经过groupBy操作后,返回的是一个UnsortedGrouping,它不是一个DataSet实现,而是一种中间结构,封装了很多有用的信息以供翻译过程中使用,通过使用这种中间结构能够更好地处理复杂的转换操作,通过下面代码来看可能更直观一些,在DataSet中查看groupBy()方法代码,如下所示:

public UnsortedGrouping<T>groupBy(int...fields){
return new UnsortedGrouping<>(this,new Keys.ExpressionKeys<>(fields,getType()));
}

对于流式Job DAG中,类设计方面稍有不同,Flink使用了DataStream和StreamOperator这两个类设计体系。我们先看DataStream类设计体系:

DataStream表示在流式Job DAG中每一步转换操作之前与之后,都对应着一个DataStream的数据结构,它内部封装了与转换操作相关的处理逻辑,其实就是StreamOperator。举几个编写流式处理程序的例子说明:调用StreamExecutionEnvironment.readTextFile()时会生成一个DataStreamSource,调用keyBy()时会生成一个KeyedStream,调用split()时会生成一个SplitStream,调用iterate()时会生成一个IterativeStream。

下面再看StreamOperator类的设计体系:

生成JobGraph对象

编写批式Job程序,使用执行上线文环境对象ExecutionEnvironment,而流式使用的是StreamExecutionEnvironment。通过用户编程API构建好DAG Job后,都是通过调用执行上线文环境对象的execute()方法提交Job去运行。无论是批式Job还是流式Job,它们在提交执行过程中,有相同的流程,也有不同的流程,通过识别这个过程中涉及相同/不同的API对象,我们抽象出如下流程概念图:

大数据学习:Flink API编程基础入门

上图中,左侧是批式Job通过API构建并提交到计算集群,基于DataSet进行编程实现,始于DataSource,终于DataSink;右侧是流式Job通过API构建并提交到计算集群,基于DataStream进行编程实现,始于DataStreamSource,终于DataStreamSink。中间部分,跨两个不同环境上下文对象是在提交Job过程中公共的抽象。

关于大数据学习,Flink API编程基础入门,以上就为大家做了简单的介绍了。Flink的编程API,是入门的重要基础,同时对于数据类型也需要有相应的了解,才能更容易理解和深入。成都加米谷大数据,专业大数据培训机构,大数据开发,数据分析与挖掘,零基础班本月正在招生中,课程大纲及学习视频资料可联系客服获取!
热点排行
推荐文章
立即申请>>