00:00
有了执行环境之后,那接下来就可以去构建处理数据的具体业务逻辑了。对于fli而言,我们首先要做的就是要把数据读进来啊弗link是可以从各种各样的数据来源去读取数据的,像之前我们在work count代码里边至少就已经接触了,可以从文件里边读取,也可以从socket文本流里边去读取真正的流式数据,那对于各种各样的数据来源,只要是数据的输入来源。我们统一把它都叫做data source,也就是所谓的数据源,那么用来读取数据源的算子,在代码里面调用的那个API,我们就把它叫做原算子啊,那所以有时候在后边我们的。章节里边提到S的时候,指的就是整个处理程序的输入端的操作,就指的是当前的数据源或者指代,指代的就是输入这一步的具体任务,具体操作。
01:07
那在代码当中呢,其实也非常的简单,如果想要去添加一个SS任务读取数据的输入任务的话,那么就是基于前面我们创建好的执行环境,调用它的source方法。这里在源码里边我们可以看到。我们可以看到,在stream excution environment里边会有一个方法,直接就叫做source。那么这个a source呢,它里边要传入一个参数,这个参数是一个s function,如果再继续点进去的话,会发现那s function其实本身是一个接口,所以我们这里边要传入的是一个对象。这个对象需要去实现s function接口。而当前如果传入了s function之后,那么它的返回是一个data stream source,这里我们可以看到本身data stream s是有泛型的,这里的泛型out类型就是传入的s function的泛型。
02:16
而我们知道点继续点击源码可以看到啊,Stream source,它本身有一成字,Single output stream operator,所以我们可以看到当前这其实就是一部算子操作,这是一个操作符,一个算子,那么当前这个算子对应的。还有继承字什么呢?成字data stream啊,所以我们说后面所有的调用操作都是基于data stream的操作,我们就把它统一称为data stream API。那当然了,这里边的single output stream operator也是一个非常重要的数据类型,在后边我们进行转换操作的时候会发现每一步的转换操作其实都会得到这样的一个operator,一个算子,啊,那当然了,本质上它还是基于data stream在做各种各样的转换。
03:13
这里边比较麻烦的一点可能是。就是前面我们提到的。传入的参数s function,这个s function我们说它要实现这样一个接口,那这个接口里边呢。当然就要实现对应的抽象方法了。对应的抽象方法主要有两个,一个叫pencil,一个叫wrong,那它俩的含义是什么呢?简单来讲就是wrong。代表的非常简单,你既然是读取数据源嘛,那让运行,也就是在这一个方法里边,我们要实现的就是不停的连接外部系统,然后去读取数据。在里边我们应该会实现这样的一个循环读取数据的逻辑,而后面的cancel呢,也非常简单,就是什么情况下我们就不再去读取数据了,相当于不再读数据了,那相当于把我们当前整个作业就停掉了,就相当于是我们在当时web UI上的那个取消一个作业的那样一个操作,其实本质上调用的就是这里的探索方法。
04:21
啊,那我们会想到对于不同的数据来源,当然就应该有不同的run方法的实现了啊,所以如果说每来一个需求,我们就单独的为他去写一个run方法的话,呃,那显然是比较麻烦的。好在flink已经给我们实现了很多预定义的接口,那另外呢,就是还有一些连接工具,Flink和外部系统的连接工具也帮我们实现了对应的。里边可以去实现的这个S方式接口啊,那所以我们在使用的过程当中就可以更加简单,直接调用就可以了,比如说像我们之前之前在worldcom代码里边读取数据的这种方式,这就是。
05:08
直接使用预定义好的对应的这些接口啊,那接下来我们就给大家详细的做一个具体的介绍。
我来说两句