00:00
我们已经了解了河流操作当中UN和connect的用法啊,那我们会发现啊,在connect的过程当中,它的灵活度其实是非常高的,我们可以用一个data stream去connect一个data stream,也可以用一个kid stream去一个kid stream,另外呢,也可以在两个data stream连接之后,再去调用一个K,指定当前连接的K啊,那这样的话,我们就可以实现类似于按照某个键值去进行撞用的这样一个操作。那关于connect呢?呃,还有另外一个用法,前面我们在看到源码里面的时候也发现了啊,调用data stream.connect的方法,其实传参是有两种方式的,一种就是直接传入一个data stream,这个我们已经说了,这就是通用的两条流合并连接的操作,那另外还有一个呢,诶,这个比较奇怪,它传入的是一个。Broadcast street,哎,这是一个广播流,哎,那这又是在干什么事情呢?那首先我们得看一下广播流又到底是个什么东西?
01:08
广播流呢,哎,我们看到它又是一个特殊的数据流的类型,它的主要特点就是。里边有一组广播状态,哎,那它的这个广播状态主要就是我们所说的啊,就类似于之前我们所说的物理分区操作,把一个数据全部广播发送到下游的所有并行子任务里边的这种操作一样,诶那现在这个广播状态呢,那就是朝对应的分区子任务里边。全部都要发送同样的数据,保存同样的状态,那这种状态就是广播状态。我们可以认为broadcast stream就是一个拥有广播状态的数据流,我们看它的属性里边也有一个data stream。啊,所以我们看data streamam的API调用的时候也会发现,如果我们直接去掉broadcast方法的话,哎,那这里也是有两种传参方式的,一种就是没有任何的参数,这其实就是我们之前所说的物理分区操作,哎,直接做一个广播发送,而另外一种操作呢,它是可以传入一个map statescript,哎,这其实就是当前广播状态的一个描述器,它底层是一个map state,就是一个映射状态的一个描述啊,哎,那所以呢,如果传入了对应的状态描述器的话,接下来我们当前的data stream就变成了一个broadcast stream变成了一个广播流。
02:44
而进一步的,如果有了广播流之后,我们调用connect方法,基于一个data stream去连接一个广播流的话,接下来他得到的就变成了一个broadcast connected stream。那对于这个特殊的数据流而言,它能够调用的方法呢?诶,我们也看到了,主要就是一个process方法,它能调用的就少很多,所以里边需要去传入的呢,哎,我们看到这就是我们处理函数家族里边的最后两个broadcast process function以及。
03:19
Broadcast process。那这两个处理函数它本身又是做什么事情呢?诶,我们看到这个跟Co process function其实非常的类似,因为它也是两条流连接之后去执行的一个process方法,要传的参数嘛,它里边必须要实现两个抽象方法,一个叫process element啊,这个我们非常熟悉,一般的处理函数里边不就是实现这个方法吗?除此之外,它还有另外一个叫process broadcast element啊,因为现在我们连接的两条流其实是不平等的,一条是普通的数据流,它可以正常的处理自己的元素,那另外一个呢,是一个广播流,所以这里边主要获取到的就是广播数据。
04:08
对应的方法也就是process broadcast element。所以这就是关于广播流的具体的一个使用和调用的流程。那当然了,如果说我们实现了对应的broadcastt process function或者key broadcast process function,那么最终得到的就又会变成一个data stream,绕了一圈又绕回data stream,具体到代码当中,呃,我们的调用方式就应该是这样的,首先先去定义一个当前广播状态的描述器,它是一个map statescript,然后呢,诶,把它作为参数传给一个broadcast的方法啊,基于我们本身的一个datat streamam啊,调一个broadcast方法,得到一个broadcast stream,然后接下来用。一个普通的data stream去连接一个broadcast stream,诶,这个一般就是用来干什么呢?这个broadcast stream可能就是广播我们当前的一个规则啊,啊,所以我们把它叫做rule broadcast stream连接完成之后,接下来再调一个点process方法,实现一个broadcast process function啊,那这里边主要就是这两个抽象方法,把它实现之后,就又得到了一个新的data。
05:27
这就是关于广播连接流的调用处理的过程。当然了,这一部分可能听起来会比较复杂,我们会在后边讲到状态编程的时候再去进行详细的讲解。
我来说两句