00:00
到目前为止呢,咱们啊对业务的数据处理呢,其实已经完成一个需求了,就是关于我们这个首单分析啊,关于咱们这个首单分析,呃,那么首单分析呢,其实整体到这儿到这儿吧,算是到这儿结束的啊,算是到这结束的,呃,然后接下来咱们现在呢,在我们这个数单分析基础之上,我们要做一个这个订单实付金额的一个分摊啊,什么意思啊,就比如说我现在呢,一个订单里边有很多商品啊,那我现在这个对针对我订单来讲啊,那么他呢,可能有一些优惠啊,可能有一些运惠,那么这些呢,他要分摊到我们每个商品啊,那么分摊之后,那每个商品它的一个实际金额是多少,那这块呢,咱们要计算一下,那么如果要计算这个功能呢,那我们说光你光靠商品呀,光靠他订单这就不行了,除了订单之外呢,那咱们还得去考虑考虑我们。
01:01
快点去找订单明细啊,需要让我们订单和订单明细呢来进行关联,那么在订单明细里边呢,那么它其实啊,也只是记录了哎,我们当前商品的ID啊,在他订单明细中对吧?其实呢,它也只是记录了我们这个商品的ID,对吧?大家可以看一看啊,只是记录商品ID,那么具体商品它的一个类别,品牌以及PU等等,像这些呢,它是没有的啊,这些没有的,所以说呢,我们也需要做一个关联,对吧?那么咱们上午呢,其实主要是。把订单明细对吧,以及呢,他的维度关联给做了一下对吧,给做了一下,那么大概流程什么样的呢?不管是我们订单还是我们订单明细对吧,那么还是我们一些维度表也好,那么他呢,其实都是通过什么,都是通过Maxwell对吧?来对他呢,来进行一个我们的监控,如果说我业务数据库里面这些数据啊发生变化了,如果维度表的话,就是说这些呢啊做新增了,那么这个时候呢,我会把咱们这个数据呢,采集到我们这卡夫卡里边来,对吧,存到卡卡里边来,然后接下来通过我们现在的这个DB Maxwell啊这个应用程序来对我们现在这个卡夫卡这个主题中数据呢,来做一个分流啊,我现在做一个分流处理,那分完流之后呢,那么接下来咱们呢,写了一些我们这个SPA产品程序,对吧,那比如说有订单的,然后有订单这个明细的,还有一些我们这个维度的,那么这些呢,分别啊,去读取不同主题的数据。
02:33
啊,分别去读取不同主题数据,那么如果是维度的话,这块进行绿色关联的这些如果说呢,要是维度的话,那么咱们直接呢,把这维度数据给它读到SPA中,然后最后放在哪了呢?放到我们的h base里边来保存起来啊放到h base里保存起来,那么如果说我现在订单的话呢,那么这个时候他要从我们这个h base中来把数据啊给拿到做一个维度关联,那么如果订单明细的话,他也是要从我们h base里边把我们现在呢这个数据给拿到,做一个我们这关联,对吧?然后接下来那我们现在呢,在我们这个订单明细和订单里边可以把我的维度给关联起来,对吧?但是他俩呢,还没放在一起,那有的老师,那我现在把这个数据也像我们订单这样保存到我们的ES里边,对吧,行不行,注意啊ES呢,它其实有一个限制对吧,它是有限制,就是他做我们这个,呃,这个权威检索。
03:33
这个能力很强,但是呢,它本身没有我们这join的功能,就比如说我现在有两个,所以你让他照一下,这个都做不了啊,这个做不了啊,所以说呢,咱们现在这两个东西你要想处理的话,那你应该呢,把它提前呢,给我合并好形成一个大宽表,那么如果想形成一个大宽表的话,同学们,那么这块呢,那么咱们是怎么处理的呢?我是把关联之后呢,这个宽表数据,然后又给它写回到我们这卡夫卡里边去了啊,又给他写到卡夫卡里边去了,那目前呢,咱们的卡布卡里边,那又多了一层DWD层,在DWD层有我们的订单,它的一个我们的一个信息,有订单明细的信息,对吧?把它写到卡不卡,然后接下来写完卡卡之后,那我是不是要从卡卡里边把咱们当前我订单和订单明细的数据给读出来呀,对吧,上午咱们呢,做到这儿,对吧,从我们现在的卡卡这两个主题中,然后呢,把我们订单。
04:33
和订单明细数据啊,给它读出来,那么读完之后呢,咱们做了一个我们这个合并啊,读完之后咱们做了一个合并,但是我们说了这个合并呢,不好啊,这个合并呢不好,对吧,我们说我们直接把它俩对吧去做一个我们的结构的转换,然后转换之后呢,哎,给它返回短这样的一个我们这样的一个KB的形式,然后现在把它们做一个我们的这短这种形式呢,那不行,其实是错的同学们,对,为什么呢?因为咱们现在这两个瘤对吧,它在进行合并的时候,你是不是不能保证他们两个一定在采一个采集周期里边啊对吧,所以说这块呢,就是接下来我们给大家介绍的一个,我们那个在处理我食物分摊里边那比较的棘础的一个问题叫什么呢?叫双流合并。
05:23
啊叫双流合并,呃,那么咱们现在呢,来看一看,关于我们这个双流合并对吧?那么这块它的一些我们这概念说,除了我们的事时表和维度表,它进行合并写成宽表之外,还需要什么呢?事时表与实时表对吧?它们合并写成更大的宽表,也就是说在我们整个这张图里边,啊,在咱们整个这张图里边,像这些呢,是我事时表和维度表合并,这个呢,是实实表和维度表合并,那么他们合并完之后呢,那么还需要那我合并之后的这两个宽表是不是往一块再一起合并形成更大的宽表了,对吧?那么这个时候呢,那么咱们就需要我们的合并在一块儿,对吧?但是呢,那么由于我们现在针对我目前的这个程序来讲,是两个流,一个订单,那么一个呢,是订单明细,那么这两个流啊,它的数据对吧,是独立的保存,独立的消费对吧,那么很有可能会出现什么情况呢?就是我们同一个。
06:24
订单中的数据,但是呢,出现在不同的批次里边了,对吧?那么这个时候对吧?那么如果说简简单单的join,那么会丢失我们这个数据对吧?那么具体的情况什么样的呢?那大家可以看一看咱们当前的这个图对吧?那我现在呢,这里有一个订单流,然后这块呢,有一个订单明细量,然后接下来咱们现在是五秒钟一个采集周期啊,那假如说我现在绿色框起来的这块什么呢?这块是我的一个采集周期,那么在当前这个采集周期里面,我从订单里边采集到了O1,然后呢,在订单明细里边。
07:03
采集到了OEA还有OEB对吧,那其实呢,我这里啊,这个订单明细还有一个oecc呢,只不过呢,这个oecc目前呢,在你的采集周期一里边,你没有过采集过来对吧?那没有采集过来那怎么办呢?在下一个采集周期是不是他就过来了呀,但是当他过来的时候,你下一个采集路器里边比这个订单还在吗?说不在了呀,那你想一想,那你说我这里再去照的话,还有人跟咱们OEC照吗?说没有了呀,那这个数据是不是就丢了呀,对吧?诶所以说呢,这块啊,就是我这双零转它面临的一个问题,咱们根本就没有办法保证同一个批次的订单和订单明细在同一个采集周期里边,那这样的话呢,咱们现在对,如果说使用我们的直接照的方式的话,就会造成我们数据的一个丢失啊,就会造成数据丢失,那么出现这个情况,我们咱们怎么去解决呢。
08:01
怎么去解决咱们现在这个问题的,大家想一想,我现在啊,这个东西我出现了,咱们双流合并,双流合并呢,那目前咱们出现问题了,对吧,出现问题的话呢,那我现在对吧,这块我得去解决一下,怎么去把咱们现在这问题解决一下呢。有什么解决方案呢?两种方案对吧,那咱们现在呢,一共有两种方案是吧?可以做这个事儿,那么咱们现在呢,那么第一种方案通过什么呀?通过缓存去做啊,通过缓存去做对吧?那么如果通过缓存去做的话,那么这个时候呢,那我就让我当前这两周的数据啊,做一个我们这个全外连接啊,做一个我们这个全连接对吧?大家想想全连接你们在这个前边夹SPA的时候应该接触过吧,比如说我现在啊,在咱们这里边有什么呢。
09:02
有啊,当前的JK,那么它呢,应该有一些重,这个重相当于什么?相当于我数据库里的一个段内连接inner重。然后这块是不是有什么外连接,左外还右外啊,除了这个之外,还有一个叫什么叫咱们这个全外连接,这个全外连接,那他怎么连呢?同学们啊。这个连接是这个什么叫内连接,什么叫外连接,然后什么叫做全外连接,这是怎么回事,这个东西给我说一下。什么叫内连接两张表,其关联把咱们这两张表就关联这个这个这个完全匹配的数据是否查出来,这叫什么,这叫咱们这个内连接外连,这个外连接呢?那其实又分了什么左外右外啊,还有全外连接,对吧?那么咱们假如说我要是左外连接,这是怎么回事?比如说A和B它俩呢,进行一个左外连接,那么这个时候他会把咱们那个A对吧,这个数据呢全部展示出来,那么他呢,B里边很多人要展示A的话,那B里边肯定有些数据可能没有办法与A进行匹配呀,那怎么办?是不是自动模拟的空值啊,然后和它A进行匹配,对吧?那么如果说我相左外连接这样的话,那右外连接和它正好是不是相反呀,对吧?就把B的数据全部展出来,那么如果B全部展出来的话,那么咱A是不是会有数据没有办法进行匹配啊,那这个时候呢,会模拟空值嘛,对吧,和进行匹配对吧,那如果如果现在要是全外连接的。
10:41
是不是把A和B的数据是不是都给它展示出来呀,对吧?那么如果说啊,我现在要使用全外连接的话,那么这个时候同学们注意听了对吧?那么我现在如果使用全外连接的话,你不能保证咱们现在这两个流中,它的一个数据K都能匹配上,那么我们肯定最终结果呢,有这么三种情况,看一看这三种情况能不能接受我如果全外连接的话,假如说我现在有两个流,一个是订单流,一个订单明细流,那么这两周来做全外连接肯定会有这三种结果。
11:20
那么这三种结果分别什么情况呢?如果是他的话,那说明什么匹配上了呗,对吧,比如说我现在这个订单和订单明细,那么如果说他都有返回,那么这个时候说明咱们订单和订单明细都匹配上了呀,对吧?那如果这种情况的话是什么呢?有订单明细,但是呢,没有订单。对吧,但订单没有,然后这种情况呢,那就是应该有订单,然后呢,没有订单明细。对吧,比如说同学们,咱们现在呢,这个A呀,代表的是我们这个订单啊,这个A代表订单,然后接下来B呢,代表咱们的明细啊,B代表咱们这个明细,然后假如说我现在A和B他们两个进行全面连接的话,根据什么呢?是不是根据咱们订单的ID来进行一个连接呀,对吧?那么如果说在当前这个采集周期里边啊,在当前这个采集周期里边,那么我现在呢,哎,根据我们现在订单ID,然后呢,可以找到我订单的这个流的信息,也可以找到订单明细这个流程信息,那么这个时候咱们研究的结果是不是应该这样的返回结果,同学们前面这块呢,那应该是一个order ID order ID,然后呢,这块是不是应该是我们现在A里边这个订单的信息,然后这里边呢,再加了一个什么说明细的信息啊,对吧,就连接之后它返回结果应该是这样的,对吧?哎,那么咱们先主要看哪块的。
12:54
主要看这块,假如说我现在这里边啊,如果说他都能查到结果了,那么这两个值不管订单订单明细那都应该是有的,但是还有一种情况什么呢?说我在当前的采集周期里边啊,同学们,我呢根据某一个订单的ID去查,但是呢,我根本在我这流里边没有查到我们订单的一个数据,就这里面没有订单数据,但是呢,我根据我当前的订单ID查,我查到谁了,我查订单明细了,那么这个时候他的返回结果是不是应该这样的O的ID,然后接下来咱们订单没有,这个是不是应该now,然后订单明细有,那么这个明细是不是放过来对吧,那所所以说呢,看到的形式。
13:36
应该这种形式,还有一种情况,还有一种情况是什么?就是我现在呢,在查询的时候也是在同一个采集周期中,然后呢,我现在根据咱们订单ID啊,我去查询结果发现咱们现在订单我查到了,但是订单明细没查到,那么他的返回结果是不是就咱们现在这种情况了呀,对吧?所以说呢,如果说我现在啊,这个使用全外连接的话,那么这个时候呢,那肯定有这么三种结果,对吧?那你对咱这三种结果呀,要做一个分析了,同学们,我现在没有查到咱们订单,是因为咱们这里边订单没有吗?
14:13
肯定不可能没有,同学们,只不过你当前这个批次说没有采集到他呀,对吧,订单不可能没有,你想一想,如果没有订单的话,你的订单明细哪来的对不对?所以订单和订单明细他们两个肯定的同时出现的,但是呢,之所以没有是因为你在这个采集周期里边没有采集到的,那可不可以这样,我现在在这个采集周期里边,如果没有找到我的订单的话,我能不能够把咱们当前这个订单明细在re里边让他待一会儿,放到缓存里边让他待一会儿。对吧,然后接下来如果说我现在呢,下一个采集周期来了,那么下一个采集周期,我这个时候是不是可以拿到订单的一个信息,拿到订单信息之后,大家前想我首先要和我当前这批次中它的一个明细呀,来进行一个关联,除了咱们现在我当前这个明细之外,他还去哪,是不是再去red里边,对吧,把它做一个关联呀。
15:13
对吧,那么其他的这也是一样的,那么如果说出现这种情况呢,那肯定是我当年的采业周期里边没有找订单明细呗,对吧,那怎么办呢?是不得把它对吧放在ready里待一会儿对吧,然后接下来在下一个采用器里边过来,咱们现在呢,从我的ready里边把这个东西给拿到对吧?哎,那么这块呢,是用我们这个缓存的方式来实现啊,缓存方式实现,那么具体的描述呢,大家可以看一看,对吧,在这里我呢这个描述啊,这个描述对吧,我呢就不给大家详细这个念了,咱们直接看什么呢?咱们直接看这个对吧,它的一个通过缓存方式啊,来解决我们现在双流重的问题,对吧?来看一下,首先呢,这里两个流啊,一个订单流,一个呢,是我们订单明细流,然后接下来,那么咱们现在呢,对吧,有一个采集周期对吧,这样的概念,比如说在第一个采集周期里边啊,那我只采集到谁的呢?我只采集了订单明细。
16:13
的这个A我只采集到啊,然后订单这一个明细,然后订单呀,或什么这个数据我都没有采集到,大家想一想,如果按照咱们原来的处理方式,这个数据一中,这个数据丢了,对吧,你根你啥也没照到,这个东西丢了,但是为了让他不丢失,那怎么办呢?那你想一想,我现在没有找到订单,那订单是不是有可能没出来呀,那怎么办?你是不是得把它给缓存一下,对吧?所以说呢,在咱们这里我呢得给加装缓存,对吧?把谁缓存进来呢?把咱们当前的这个订单明细A给它缓存一下。啊,把这订单明显缓存一下,那么接下来再往下走,再往下的话呢,咱们第二个咱们呀,采集周期第二个过来。
17:01
大家看一下,那么如果第二个采集周期过来之后呢,那么咱们现在这里边我是不是有订单的一个信息了,我这里是不是又来了一个订单明细B呀,对吧?那我在咱们当前采集周期里边,我要照的话怎么照呢?首先咱们现在我这个当前我这个订单和我这个订单明细在咱本采集周期里来,他俩肯定先关联一下,对吧?那么除了他俩关联之外呢?那咱们现在我是不是得到我ready里边来找一圈啊,找谁呢?是不是得找咱现在缓存到了我这个ready的订单的明细啊,对吧?那么接下来再往下走,完事了吗?还没完事了,有没有可能同学们是这种情况什么呢?就是我现在啊,在这里你已经匹配完了,但是呢,我还有明细没出完。就我当前这个订单可能还有别的明细呢,还没出来呢,还没采集到呢,对吧?那你为了避免这种情况,那怎么办呢?咱们是不是应该把这个订单对吧?这个O这个也给它缓存一下呀,所以说接下来咱们现在呢,在这里,而我们现在呢,这个订单也给缓存一下,等下一个采集周期过来,那么这个时候呢,他发现哟,我这里没有找到订单,那如果车没找到,你去哪找我去缓存里边找啊,对吧?那么这种情况呢,注意啊,它可以通过缓存来解决我们现在的双流重的问题,那么如果通过解决缓存去这个处理的话,对吧?它优点什么呢?不会造成数据重复对吧?那你想那不会造数据重复,肯定是对比来的嘛,对吧?这块呢,咱们先知道啊,但缺点什么呢?缺点就是代码特难行啊,这这个缺点就代码太难写了,对吧,尤其是什么,尤其是咱们多流照文的时候,现在是不是两流啊,如果多流照的话,你想一想你要考虑的问题,同学们。
18:49
假如说像value join,那这个时候往咱们那个缓存里面放,你考虑的情况是不是很多对吧?所以说呢,这块同学们咱们呢做参考是吧?我呢这个写过一的代码,在我给大家提供资料里边,对吧,有一个实施,然后呢,在咱们这儿对吧,资料里边有一个双流状,使用缓存解决我数据丢失的参考,感兴趣同学的话可以去看一看对吧,感趣同学可以看一看对吧?那么这块呢,其实相比较起来还算好,因为咱们现在呢就俩流啊,相比较起来还好,就俩流对吧,但如果说要是其他流再多一点的话,那么这块呢,对吧,这个代码相比较起来其实还是对吧,有点难度的对吧,还有点难度的对吧,感兴趣啊可以看一看对吧,但这个呢,其实解决方案,具体这种解决方案,它的一个大概的一个执行过程,它的原理你得不弄明白啊,这是第一种方式去解决我们的一个双流状的问题。
19:47
啊呃,那么除了这种方案之外呢,那还有没有别的方式呢?那咱们来看一看,对,那么第二种方案,第二种方案呢,那什么呢?对吧,通过咱们这个划窗对吧,来大家看。
20:05
首先呢,这也是两个零对吧,这两个零,然后接下来那么咱们现在呢,在这里可能出现什么呀,可能出现啊,那我们那个对关联没有关联上的情况,对吧?那么这第一个采集周期,然后接下来那我现在呢,除了我们现在它之外,除了采集周期之外啊,我又再加了一个这个表示什么呢?这表窗口。对吧?还记得咱们在SPA里面有一个window的概念吗?对吧?这个window是什么意思,窗口,然后呢,它采集出去什么关系,如果要没有窗口的话,咱们是不是一个采集周器一个处理呀,对吧?那如果有窗口的话,对吧?那么咱们是不是处理单位不是采集周器了,是不是一个窗口都要处理一次,对一个窗口来处理一次,对吧?哎,那如果这样的话,咱们现在呢,在这里同学们假如说啊,我当前采集周期对吧,是五秒,然后我这窗口大小呢,比如说十秒对吧,比如窗口大小十秒,那这个时候咱们现在你记的五秒数据我处理嘛,不处理对不对,我根本不处理,然后接下来,那咱现在干什么呢?那再往下走对吧,那么再往下走,那我这块大家来了,这个是不是又来了,第二采应器是不是又五秒处就过来了,那五秒这个加五秒它俩是不是十秒了,那么十秒的话,我现在窗口是不是可以处理一下呀,对吧?那么如果窗口处理的话,咱们是不是有一。
21:29
这个窗口的一个滑动的步长了,那怎么滑呢?对吧,那么咱们现在在这里,我可以往我的窗口了,对吧,以五秒钟的一次来滑一下。来划一下,那么如果划一下的话,大家想想,原来本身这两个东西啊,这两个东西它说不在一个采集周期里边的,对吧?那么它俩呢,根本匹配不到,但是现在他俩跑到一个窗口里面去了,对吧?那么一个窗口咱们现在是不是对这里数据一起来做处理啊,那他俩是不是又跑到一块去了,对吧?所以说可以关联上了嘛,对吧,可以关联上了对吧?哎,那么我现在呢,假如说那我要再来,对我要再来,比如说啊,我现在又过了五秒钟到又过了五秒钟,那么如果又过了五秒钟的话,大家想一想,咱们现在这个窗口,这十表示窗口它的一个大小,这个大小呢不变,然后呢,我说滑动不长是五什么意思,是不是,假如说我现在又来了一个采集周期,对吧,那么咱们这个窗口还是这么大,还是处理呢,十秒钟的数据,只不过咱们现在不应该处理这两个采集周期了,你是不是应该往这边划一下呀,对吧,怎么划呢?我们是以五秒的不长来划一下,那这个。
22:39
就是他对吧,就相当于往这边对吧,划了我一个采周期对吧,那这样的话大家想想这个东西对吧,如果按照咱们原来默认的方式的话,它肯定没有办法匹配,但现在呢,咱们是不是和它可以匹配上了,在这里有一个问题,同学们。有一个问题,什么问题呢?来你看咱们一开始在我第一次处理的时候,咱们这会儿的数据处理了没有,就说他俩是不是已经匹配一次了,对吧?等咱们下次再处理我这个数据的时候,大家看在这里我这个数据是不是又处理了一次,是不是又是一次,那你说如果处理了两次的话,是不是又数据重复啊,对吧?所以说我们现在呢,如果说啊,这个要使用它的话,可以解决咱双照的问题,但是它也会带来问题,就是什么呢?就数据重复,那就数据重复对吧?但是数据重复对你们来说,现在应该问题不太大,对吧?假如说我现在想避免数据重复,那你们去重,你们有思路吗?Red行吧,对吧?可以通过red来驱重,对吧?好,那这个呢,是关于我们现在的双流John它的第二种解决方案啊,第种解决方案对吧,什么呢,是通过我们这个窗口注意啊,这个这个窗口这个优点呢,代码相对简单,缺点呢,对吧,这个会造成数据重复,对吧,咱们。
23:57
需要这个对数据呢,在做一个驱重处理,对吧?那么还有一个这里是什么呢?说咱们现在呢,在讲窗口的时候,对吧,给大家建立一个我们这个这个不长的概念啊,建立不长的概念,对吧?那么如果说同学们咱们现在呢,在这里,假如说啊,我现在呢,这个窗口我不是啊从这儿然后挪到这儿啊,我不是这么挪的,我是呢,十秒钟一步长,如果十秒钟一步长,咱们是不是从这儿开始啊,到这是不挪挪挪到这儿来了呀,对吧?那我问大家解决了咱们现在双照的问题了没有,也就说只要它俩中间这块有间隔,是不是这个双绕数据有可能存在啊,所以说对这个窗口呢,它的一个滑动啊,有要求必须呢,是咱们这滑动窗口不能是刚才咱们那种那叫什么,那叫滚动窗口啊,叫滚动窗口那不行啊,那不行,那就说如果说我窗口大小是十,然后你的不长也是十那。
24:57
这个呢,不行的啊,这是不行的,对吧,其实有这样一个概念,咱们呢,应该是滑动窗口啊好了,那这个呢,是关于我们现在啊双流的它的一个合并问题,以及呢解决思路,咱们稍微的想一想,对吧,总结一下。
25:13
总结一下,咱们说啊,那到目前为止呢,这里来了俩流啊,这里来俩流对吧?那么咱们当前呢,这俩流啊,那么直接处理呢,对吧?这种方案呢不行对吧,为什么?因为我现在呢,不能够保证对吧?咱们订单和订单明细在同一个采集周期里边,那么咱们的这个要解决双人照的问题,对吧?那么咱们的两种方案,第一种方案是什么?缓存对吧?诶可以把我现在的数据放到我们的red里面去,等到具体的缓存的时候呢,那你得知道A和B,那么咱们这两个数据啊,如果要进行通过缓存的解析双转的话,那么这两个流呢,它必须得做我们这个全外连接啊,B做全外连接,然后进下来全外连接的话,那么这里头的结果是不是应该有这么几个some some some no,还有一个是no some,然后根据咱们现在返回的结果的值呢来决定,对吧,那我现在呢,是。
26:14
应该都放到ready中去,还是从ready来取,对吧?这个呢,是关于我们现在啊,它的一个缓存这块啊,那么除了缓存之外呢,那还有另外一种方式,我们这里用的什么呢?我们使用我们这个这个Spark streaming,它的一个滑窗啊,它的一个滑动窗口的这样的一个概念,那也就是说我们原来呢,是以采集周期为单位的,那这个时候呢,咱们现在不是以采集周期为单位进行处理了,而什么呢?而是以窗口为单位进行处理,大家注意啊,那么如果以窗口为单位进行处理,那么这个时候这个窗口到底设计多大,你们觉得这个东西有固定的值吗?啊和什么有关系,和你机器的性能有关系,对吧?和你机的性能有关系,就咱们现在啊,在这里,我这窗户到底设多大,和你的兴趣关系对吧,你像上个班有的同学设置40秒才可以看到这个效果,那意味着什么?
27:14
意味着呀,就是说它的运行程序,咱们是不是要达到订单流的数据,达到订单明细流的数据啊,这两个流相差多长时间呢,相差了将近40秒,所以它的窗口呢,就得设置这么大,要不然你想一想,假如说我现在本身我执行完了之后呢,我这个40秒才拿数据,结果你窗口呢,设置十秒就结束了,那是不是没用啊,对吧?所以说你的窗口呢,要时间大一点,那么如果你窗口设置大等,那同样也变临一个问题,你窗口越大,重复的是不是就可能越多呀,对吧?哎,但是呢,咱们这里的驱重啊,这里得驱重好,那具体的代码怎么写,咱们呢,稍微停一下这个。
我来说两句