00:00
那么从这一节开始呢,我们会带着大家去看一下can,它一个框架的组成,包括它的一些源码。啊,然后我们可以看到就是它一个四个最基本的组件,这当然这是对配置文件来说的啊,也就是我们之前刚开始就开始说的even块,Source块,Transport块,Think块,当然了这个块呢,实际上如果说你的业务就是说只是说我把这个数据从source里面拿过来啊,得立刻向think外面去输出,那么传块里面的这个具体的,呃,Script s插件的其实可以不用写的,但是你这个配置文件四个最基本的组成,这个架构要留着,这框架要留着,有transform后面的这个画框号里面可以写空,但是你transform不能没有。啊,这是一个最基本的要求,当然了,我们可以从这个配置文件呢,也能看出,就是说呃,它后面的一个代码是怎样去组织的,当然我们后面会带着大家去尽可能的去呃读一下它里面的一些源码。嗯,然后呢,接下来我们可以看英文。
01:02
从块开始看一文块呢,实际上我们说是它是用来干什么的啊,在这个源码里面反应它实是它实际上是用来创建这个呃对象的。呃,我们知道我们在编写Spark和flink代码的时候,上来一个干一件什么事,都是要创建这个执行环境的一个对象啊,然后完了之后,你比如说在fli里面,我们就需要调用点啊,Set什么什么什么对吧?啊,去设置这个检查点的一个状态啊,是精确一次还是至少一次啊,包括它的状态后端是什么样的啊,都是我们通过这个因为对象来拿到它的方法进行进行一个设定,那么在因文画里面呢,实际上。我们可以看到,就是说在整个编码里面有一个叫卡呃的这个类啊,它里面声明了这个。呃弗link哈,我们这这是以flink为例,那么它实际上是声明了flink这个模式下,这个引擎下啊支持的所有。所有设置的K,也就是说通过这个在一块里面,你可以写这些,写这些值,写这些K啊,把这些东西写进去,完了对它进行。
02:06
那么好,Even块的这个部分呢,我们就说完了,嗯,还是比较简单的啊,那么接下来我们在讨论source块,Transform块,还有这个think块,之前呢,我们需要讨论一下就是呃,Source transform,还有think这些插件之间,它到底是以什么样的类型呃传递数据啊,我们回忆一下我们在编写一个呃,Flink的job的时候会干什么,首先呢,我们会先source。啊,然后经过我们的一个map什么什么操作啊,比如说这可能里面是一个字符串,对吧,我现在在操作这个字符串数据,然后经过这个map操作呢,把它转成了一个啊,我们Jason对象的一个一个一个数据完了之后呢,再经过各种样的操作是吧?或者有可能呢,呃,变成了这个类啊最后呢,就是说ID think把这个数据再发出去。呃,那么在这样一个过程中呢,我们知道就是不同的算子,它都会操作不同的数据类型,也就是他这个方法里面去处理的这个数据类型是不同的。
03:03
呃,那么这样的话,在我们的C塔里面,我们刚才发现就是我们在写配置文件的时候,实际上没有跟这个呃类型发生过什么事情,那么。啊,这是为什么呢?其实我们喜内部呢,它遵循了一个约定,也就是插件和插件之间呢,要使用肉这个数据类型来进行一个数据的传递。嗯,也就是说我一个插件。要保证我接收到的数据呢,是是肉肉类型的,完了之后经过处理完之后,对后面一个插件的输出也得是肉类型的啊,这是can的一个内部的约定。那么使用肉它有什么好处呢?就是因为data stream row,它可以很方便的和table进行互转,这样的话呢,我们就可以给这个的框架呢,加上一个用circle来处理数据的能力。那么这个地方呢,我们可以去源码里面求证一下,在我们的资料里面呢。有一个这个零一资料。
04:00
然后在这里面有一个东西叫原版。然后我们可以看到这个src.tgz就是我们的源码。但是你注意要解压的时候呢,千万不要使用360压缩,因为我发现就是用360压缩的话,好像会导致。啊,你的这个文件它不能。就是会有损坏啊,那么所以说呢,嗯,我们这里呢,实际上是用的是band zip这个软件,有兴趣的话大家可以下载一下。当然这是对那个什么上说的哈,对Windows来说的,然后我们解压完之后呢,这个就是我们源码的一个解压出来的结果。嗯,点到这个路径里面去。然后直接用I卷打开。那么这边呢,我们就可以看到,就是啊,是我们can这个框架的一个结构了。然后我们可以啊去求证一下哈,就是这个各个插件之间,它是不是以这个data。
05:06
啊,来作为一个交换的。我们可以先看到这个connectors里面,这个地方就是我们的各种连接器,在这个我们是以flink为例,所以说就看flink底下的。嗯,举个例子,比如说我们刚才看的是以socket。为这个输入,我们看一下socket这里面怎么写的。我们可以看到socket这个类,它有一个。方法叫get data。这个地方呢,实际上就是我们啊整个数据它的来源就是怎么样去产生这个数据源的一个方法,我们可以看到它的返回类型呢。是data STEM把这个地方截一下。然后紧接着呢,我们再去看一下,看什么呢?看这个刚才我们调用的这个。Circle和这个split转换插件,在这个transforms里面有一个transform flit,我们看一眼。
06:01
先看street。我们可以看到这个地方,它有它有一个实现,就split这个点class,点这个这个点点Java啊完了之后我们可以看到啊,就是在这个split里面呢啊,它有一个叫process的方法,我们可以看到它是一个data stream的一个输入。然后输出呢,又是一个迪达STEM。好,我们再截个图。然后我们再去看一下这个我们最后的那个输出结果。比如我们后面要去卡夫卡,往卡夫卡里输出是吧,我们可以先去卡夫卡里面看一眼。可以看到里面有卡table。我们可以看到这个output stream,这个这个方法呢,它是输出的一个方法,我们可以看到它是什么呢?它是data stream row进来的。是吧?所以说呢。
07:01
实际上在这个an里面呢,这个各个插件之间,实际上是以data他stream这个数据类型。来进行一个数据的传递。
我来说两句