00:00
我们现在已经了解了flink的部署、提交以及它运行式架构的一些重要概念,那现在其实我们对flink就有了整体的认识,而且在之前第二章我们做link快速上手的时候呢,也编写过一个简单的work程序,在这个里边呢,我们使用data set API和data streamam api2种方式分别实现了world的批处理和流处理。那其实在前面我们也介绍过啊,第一章的时候分层API这里我们就介绍过data set API和data stream API,它是属于我们这里的核心层API。而且呢,对于现在的link版本而言,Data set API已经即将要被弃用了啊,那所以我们现在真正的流批一体,那真正使用的其实就是data stream为PI,所以接下来呢,我们要介绍的那就是以data streamam为PI作为重点内容来进行详细的讲解,那就是第五章data stream API啊,那当然了,其实对于弗link而言啊,整体API的调用,我们可以认为基本上它都是基于data stream的,所以说这里边的API其实是非常非常丰富很多的,所以第五章我们主要是一个基础片,介绍最基本的一些应用方式。
01:20
那我们这里一直在说this stream data stream,它到底是一个什么东西呢?啊,直接翻译的话,它是数据流,但是我们发现啊,一般情况我们写的时候都是把它连在一起写的啊,它本身就是flink底层一个用来表示数据集合的类啊,就是一个Java class,我们知道flink底层是用Java来编写的嘛,这个类名就叫做data stream,我们可以把它看成一种比较特殊的Java集合类型。另外其实我们知道对于Java集合类型而言啊,那比方说我们一个列表,一个数组,其实里边的元素还应该有一个单独的数据类型的定义啊,所以这里的datat stream只是一个类似于集合类型,那里边呢,还应该要指定当前数据流里元素类型的一个泛型啊,所以我们在真正定义data stream的时候,这个我们也可以在代码里边做一个参考啊,比如说像之前我们写的段代码里边啊,我们可以随便按着CTRL键,然后点到源码里边看一下,我们看Fla map这样一个方法,它其实返回啊,Scla后面我们这是当前方法的返回的数据类型啊,是一个data stream,另外后边还加了中括号一个R,说明当前返回的数据类型就是以R作为泛型的一个数据流。
02:43
啊,所以我们看到stream本身啊,这个class这个类,它是有对应的泛型定义的。当然就是说我们现在使用的是skyla版的API嘛,所以我们看到啊,在LA里边同样也有data stream这样一个类的定义,最底层当然是Java里面也有对应的定义的。
03:00
这就是关于data stream的一个基本介绍。那我们有了data stream之后,接下来当然就是在代码当中要针对当前的data stream去进行处理,进行转换了,我们发现啊,在代码里边这种方式其实就是前面我们先使用当前的流失执行环境,因为调一个哎,类似于创建数据源的方法,这样的话得到的结果我们看到它其实得到的就是一个data。当然现在我们读取一个文本流的话,我们看到它得到的data stream泛型其实是stream,也就是我们得到的是一个文本字符串类型的数据流,里边的元素都是字符串,然后接下来呢,我们当然就可以进一步基于当前的数据流data stream去调各种各样的方法。这里的map啊,后面的map,还有这个k by some,我们会发现啊,点进去之后会发现这些其实都是基于data stream,都是基于data stream来调用的方法。
04:03
所以我们可以认为一个flink流失处理程序,它的结构其实就是先读取数据源,得到这样的一个data stream,然后接下来呢,就调用各种各样的处理转换方法来对当前的数据流进行转换操作。当然了,最后我们发现还应该有一个输出的步骤,因为我们做完转换计算,最终肯定是要写入到想要的地方展示出来的啊,或者我们最简单的就打印输出,这也是相当于写入到标准控制台了嘛,所以我们会总结出来当前一个link程序,其实整体来讲就是这样的几步操作。我们可以看到划分开来的话,其实就是这样的四步操作,首先我们应该获取当前的执行环境,一般情况下,我们现在流失的执行环境,那获取的就是一个STEM execution environment,然后接下来呢,就是读取数据源,哎,在link里边数据源统一叫做S啊,Data source啊,所以source这样一个类其实就是表示我们当前的数据源的,然后接下来呢,那就是会得到一个data stream。
05:14
接下来我们就可以定义各种基于当前数据流的转换操作,各种转换统一叫做transformation。然后最后一步,我们要定义计算结果的输出位置,我们可以把它叫做sink啊,当然了,Thinkk我们知道它本身有这个下沉水槽的意思,所以在有一些文档或者说有一些资料里边,会把这个thinkk对应着source叫做数据会啊,前面这个是原数据的来源,最后这个是数据的汇,数据的汇集写入啊,我们这里呢,就是简单的更加形象的把它叫做结果的输出就可以了。当然了,最后还应该有一步触发程序的执行,就是我们这里边要调用一步Env.execute,这要把当前的这个流式任务要执行起来,它是一个对于到来数据事件的监听,所以我们当前这个任务是要不停的跑着的。
06:09
这就是我们对于一个flink程序的基本认识,主要分成四大块,那所以接下来呢,我们就将按照这样的分类依次进行详细介绍。
我来说两句