00:00
好,那接下来呢,这是刚才我们分析的思路,我们就不聊了啊,所以说最终呢,所谓的这个跳出,跳出事件,本章就是一个条件事件加一个超出事件组合,那最后呢,我们把它用定起来就好了,对吧,用起来啊,那接下来呢,我们再写这个代码,我把这个先复制一下啊,把它叫use the jump detail APP。跳出明细对吧,DWM层。往这放好,那还是一样的,我们先写这个思路啊。第一步读取啊,不是读取啊,就是获取,诶这个还是写成这个注释啊。获取执行。环境,那第二。读取卡不卡主题的数据创建流对吧。呃,然后然后要注意一下我们要做一个事情,因为这里面呢,我们要用within,对吧,所以呢,我们做这个事情,做什么事呢?来看啊,呃,将每行数据转换为杰森对象,并提取时间戳生成water mark。注意在我们的。
01:24
在CP里边是可以用实践时间,而且它能够如果加了VC,它是可以处理乱序数据的啊。这个知道吧,对吧,所以如果说我们要用CP,而且用到VC,就是有一个超时嘛,所以我们一般都会提取事件时间啊,所以这个要注意一下,比之前要多一点东西了啊好,这是我们看到一个点,然后接下来。第四步啊,那这个理由准备好了,其实就是说接下来到我们的这个。CP编程三步走哪三步呢?第一步三步走到第一步啊,这个定义叫模式序列。
02:09
好,第二步将模式序列作用到流上,这是第二步对吧,那第三步啊,就是在CP编程当中三步走,第三步提取。实践,那我们这边有两个叫匹配上的和超时实践,这两个我们都要啊,我们都要一个都不能丢,对吧,所以呢,我们匹配上和超时的事件我都要对吧?好提取好之后,然后呢,Unit了。有这个两种。事件啊,两种事件对吧,啊,接下来呢,第八步就是交。数据写入卡夫卡。第九步,启动任务。
03:05
OK吧,其实在CP编程当中,就这个456编程三步走,对吧,1233步,OK吧,只要你记住这三步就够了啊,至于怎么写,那你用到的时候可以去稍微的去搂一眼看一看嘛,对吧?其实CAD的边长并不难在它的边长上面,而是难在什么呢?思路就是说如何去想明白定义模式序列,这个是最关键的,这个CP里边的关键点就是刚才我们分析的说,第一条数据为捺,第二条数据为捺,再加一个VC10秒,这个是最重要的,而代码怎么写很简单,CB编程本身不难,对吧?难就在难在哪呢?思路的想上面啊好,那接下来呢,这个地方第一个我拿一下这个中行环境。嗯,那这块注意一下,我给大家写一下,呃,咱班也没有人问啊,我这个地方都是一啊,因为我的主题都是一个。
04:05
我的主题都是一个分区对吧,那这边注意一下啊,就是生长环境。这个地方与什么卡夫卡分区数保持一致。OK吧,与卡瓦的分区数保持一致啊,那这样的话最优嘛,对吧,也不浪费啊,也不会一个并行度一个lo的多消费啊,好几个分区,这个没问题吧,我一直没说这个点啊,也没有人问,我一直写的都是一,因为我的主题都建的一个分区啊,都是建了一个分区,那你有多个分区,你可以改为多个没问题啊,这个地方没问题的好吧,好,那第二个读取这个数据,那我们把这个拿一下啊,把这个拿过来。放在这,然后接下来因为点at source,然后呢叫MY卡YouTube.get卡consumer,嗯,然后呢是source topic,然后是不如白。
05:06
卡加V得到一个卡夫卡的一个好,那接下来我们对他要转换对吧?D,呃,那转换的话map,然后呢是杰森。调用我们的pass object的一个方法对吧,然后提取wordmark,生成提取时间之后生成wordmark点。叫a sign time step and whatmarks对吧?嗯,那接下来呢,Whatmark strange,嗯,那我们要不要设置乱序啊,假如说设置一下吧,我们设置个一秒的乱序时间可以吧,这里边duration of second,一秒钟的乱序时间啊,假如说两秒吧,我们稍微测一下啊,这个呢,搞长一点,然后这边是不是要有类型杰森object。对吧,介绍不掉的好,那接下来呢,继续点with time。
06:02
那提取我们的数据,那就是element当中点get我们的。浪太浪,然后呢,传一个TS。啊,也就是说我们数据里边本身就有时间戳对吧?好而且呢,它就是毫秒数,所以呢,我们也不用操心啊,直接呢获取TS就好了,好,那这边呢,我们就得到了一个杰森OBJ的一个。D,对吧,但是此时已经提取完了,What mark好,接下来定义模式序列,定义模式序列啊,注意一下叫patternon,诶我们要导,注注意啊,这个包我们已经导过了。之前我们已经导过了这个CD包了,我还跟大家说过对吧,说后面我们会用到这个CD,所以依赖呢,我已经导过了啊,依赖已经导过了啊,所以这边可以直接用啊呃,Pattern。追要找这个。弗林,诶。啊弗在这啊CD包下的对吧,点begin啊点begin它一开始它必须以它开头啊,那这个begin呢,它也是一个这个泛型方法,看见没。
07:09
有一个翻译方法,所以呢,我们数据呢是杰森object,我们也要写上杰object,然后这个里边要一个名字,假如说我们叫star,以它开头,对吧?呃,接下来呢,点will will条件,我们创建一个简单条件simple condition,那我们返回数据,什么东西要为出啊,第一个数据我们说了上一跳页面为number板,所以呢,我们要获取上一条页面信息,点get接第二个的,然后呢,这边是先获取page置。然后点开,然后获取谁我们的last。Page。ID对吧?好,那我们得到了一个ID。呃,那接下来我们要返回的数据,它要。
08:02
等于呢,就为处对吧,所以呢,我们就返回它等等于。那啊,它等于那或者还是一样的,或者last p id.lengths小于等于零。对吧,好,我们做这样的一个返回就好了。这没问题吧,好做这个事情好,那这个第一个事件搞定,那接下来下面next对吧,Next呢,假如说我们就叫next啊,这叫next,然后点will是不是条件跟它一样,完全一样对吧,我就拿过来就好了。拿过来就好了,因为我们今天说了条件完全一样,然后接下来注意加一个within对吧,时间time注意啊,你看你看参数就知道了,这个地方呢,它是一个什么叫window time,所以前面我们那个事件时间才有用的。时间,时间才有用,对吧,叫window time啊,要一个time time.second那这个呢,我们就十秒就行了,对吧。
09:04
十秒钟,卡尔嘉宾得到了一个pattern。得到了一个patternon对吧,这个模式序列就定义好了啊,模式序列定义好了,第二个将模序列作用到流上面,那就拿着CP点开第一个位置是一个。流啊,是一个流,但是要注意啊,那我们想一个问题,想什么问题呢?来啊,我们要去找这个所谓的单跳是不是应该针对于某个人而言。是不是要把同一个人的访问记录放在一起做比较?对吧,那如果说我直接把这个流放在这儿了,大家说对吗。对吗?嗯。
10:06
对了,要做什么?要做KBY,我们肯定要按同一个m mid来吧,所以呢,这边注意不同的人都算了,那肯定不行是不是,所以呢,这边要做一个KBY,然后呢是杰森,然后我们要的杰森点get还是common字段。Come,然后继续点get。要谁啊麦?是不是对吧,我们肯定要针对于同一个mid去做这个事吧,所以注意啊,这块千万不能漏了,这边有一个T能理解这个事吧。能不能理解?这个是比较好理解的一件事情,对吧?好,那这个有了,然后接下来呢,我们提取这个超时事件啊,提取匹配量事件,那么就select,当然如果说你要做压皮,你可以用这个flag select的对吧?好,那我们select的那用哪一个呢?那必然超时事件也要的对吧?超时事件也要的,那看啊呃,那这里边呢,就是这个。
11:21
第一个要这三个参数的out t特殊流标记对吧,然后接下来的提取超时时间的,然后提取匹配上的时间的。对吧,就这三个啊好,那标记呢,我放在外面有一个out。这个地方我们还是接三。好不价格的啊,介绍价格的好,这边呢,有一个ID叫他。看下V得到一个time out t对吧,要一个这个超时的标记,好,那第一个位置超时标记方式,第二个位置它要一个超时的叫pattern timeout方式,你有一个pattern timeout的方式,好,这里边呢,返回数据,好最后一个我们先写上,要不然这个通篇爆红不舒服啊,最后要一个patternon select的方式,那就patternon select方式。
12:19
这个地方呢,我们假如说还是返回J3啊,不这个。对吧,好,那这块呢,提取时间,呃,那超时事件我们提取谁呀。那我们想啊,超时了就第一条数据匹配上了,第二条数据没来,没有第二条数据是不是才会超时,那我就把它拿出来,对吧,把它拿出来做一个返回就好了,好,那这个数据呢,很好了,它是一个map,它这个map啊,首先我们从map当中。点get谁啊这个start,注意我们取名字叫谁啊,叫start对吧,先把它取出来,取出来之后呢。
13:04
它是一个list。继续GET0,好,这就是一个3OBJECT。对吧,好,那同样的问题,如果匹配上了呢,就是两条数据都存在,就是第一条数据为呢,第二条数据上一条也为呢,那我们要哪个,是不是也要第一个,是不是还是要第一个呀,所以它提取的方式呢,跟它一样。两个人都是获取star的,这个里边的。第一个。有没有问题?这块能跟上吗。没有问题吧?啊,那你想,如果超时了,我们要的这条数据本身也就是第一条数据对吧?无论是超时还是匹配上,那么我们都用的是第一条数据,所以呢,获取的方式都一样,Get start对吧?好,那我家回车得到一个c leg DS,这个是匹配上的数据。呃,那接下来超时数据提取c like的DS.get set output,把这个timeout tag放进去,加V,得到一个timeout DS。
14:27
对吧,接下来呢,UN2个流的D。我们的time DS好,得到一个UNDS。之后呢,数据写出去,unit.print我们先都做一个打印啊,unit.and think对吧,叫MY卡点get卡法的一个producer,呃,当然呢,这块还是一样的道理,我们也要做一个事情,对吧。要转成字符传啊,这个就比较麻烦一点慢。诶。
15:02
嗯,这个地方看啊好,然后这个地方呢,我们得到一个对吧,写出去最后呢,启动任务,因为点。好取个名字,然后呢,我把这个类名拿过来往这一放,对吧,那这个任务呢就搞定啊,对于这个单跳这个事情呢,就搞定了,对吧,接下来呢,我们就花一点时间做一个测试啊。
我来说两句