00:00
好,接下来呢,我们提取各个流的数据对吧,拿着配置DS.get set output,然后呢,我们就要看start,这个呢,我们就得到一个start.s对吧?呃,继续点。咱们就得到了一个。Display的一个点对吧,然后呢继续。Action。D对吧,最后还有一个错误。好,这个搞定,接下来呢,我们对它做一个打印,并写到对应的主题,对吧,打印呢,我们先写一下。Page。点。Friend。这个呢,我们写一个配置啊。嗯,第二个对吧。
01:06
Display。然后是这个。好啊,这个就很舒适对吧,哎,大家都对齐了,接下来呢,我们要把数据写到对应的主题里边啊,然后呢,我们先把这个写好吧,因为我们那个还得写那个工具类呢,对吧。咱们还要加一个工具类啊,所以呢,我们先把最后一步写了啊,省得等会上漏了对吧。啊,咱们的名字啊,用这个。
02:03
好,然后接下来呢,我们就写这个工具类啊,正常来说呢,我们配置点点。Had think对吧,你在这边呢,你要你有一个叫link卡夫卡的producer对吧,但是呢,你这样的话,每一次都得你用这个对象,你写一大堆啊,那没必要啊,你参数呢,有很多都一样,所以呢还是一样的,我们写到这个工具类里边对吧,这就是我们最开始看到那个工具类,我说后面我们用到的时候再说。对吧,啊,后面我们用的时候再说啊,那是这个意思,好,那我们来写一下啊这个东西。啊,但是这里面又用到这个,呃,自定义的这个。卡夫卡这个内容啊,等会我们也给大家介绍一下啊,但实际上这一块呢,我们都转成思了,也可以用那个simple string啊。好在卡瓦当中啊,然后呢,我们再写第二个。Public。Steady。对吧,然后呢,我们的返回值是。
03:01
Flink。卡夫卡的producer对吧?啊,那咱们呢,可以写一个string类型的啊,等会如果说你要写这个另也可以写,我等会给大家说怎么去写啊。好。嗯,那咱们呢,这边有了对吧,然后呢,Get我们就要get它啊。我们想我们往外写数据,我们要什么东西,首先我们能想到的主题吧,你肯定每个人的主题都不一样啊,逃避了对吧?好,那么先写主题啊,最后呢,我们得返回,没有一个叫link。Producer。对吧,脚踏啊呃,那这边呢,我们看一下第一个位置。他要一个。最简单的是什么,这个。List对吧,传一个集群信息,然后主题,然后呢,要一个civilization的一个STEM,好,那集群信息我们不是有这个。
04:02
叫。呃,我们叫卡法嘛。对吧,集聚信息有了第二个主题,哎,传进来了主题,呃,第三个叫civilization的一个STEM。对吧,那这个呢,我们之前用的是simple。那这个往外写,其实可以这样用。对吧,可以这样用,当然有的人说我就不想用,我也想自定义一个,可不可以呢?可以我给你写一下啊,来在这。我把这个复制一份。我把这个复制一份啊,当然呢,它会报错对吧,等会儿呢,我会给他注掉或者什么样子,或者我这边暂时先加一个参数啊。我先加个参数,这样不报错,构成一个重载的方法。对吧,啊,因为你的参数列表不同。啊,参数列表不同,那这个就不报错,虽然你的方法名返回值所有的都一样,但是参数列表不同,那构成重载对吧?好,那这里边怎么写呢?我就不用它。
05:01
对吧,好,那我们看一下这个不用它还有什么东西,诶,但是这个玩意呢,怎么样,它过时了,它叫什么K的,所以来自啊过时了你还只能写它,但是呢,除了这个之外没有了吗?还有来看这。它可以传什么,传卡夫卡,更高层的传这个接口对吧,那这个接口的话,我们可以自定义了呀。是不是?对吧,这个接口咱就可以自定义。OK吧,啊,咱们就可以做这个。自定义啊啊,那怎么做呢?第一个位置它有个t topic,哎,那刚好这玩意儿呢,我们就叫t topic得了。对啊,Default。啊,他要这个东西,那这个呢,我们就不能这样写了,对吧,改掉啊,我们改了来。第一个位置它要一个default topic,第二个位置呢,很明显告诉我们要一个卡夫卡socialization的STEM,那我们又一个叫卡夫卡的。Civilization的一个STEM对吧?诶这个是序列化啊,前面呢,我们写的是什么卡不卡的,第1CIVILIZATION DEMO,它是反区列化,因为你这是消费者,这生产者,生产者呢负责序列化啊呃,接下来呢,这要一个pro对吧?好,那pro给你呗。
06:18
你要有,那我们里面放东西对吧点叫consumer。啊,那天。你把信息给我。对吧,啊,你肯定要给我集群信息啊,你上面一个集群信息写在这儿,你这儿呢,你得写在这个配置信息里边,Part对吧,但生产者呢,你还可以加这个什么A这些东西对吧?好这一步呢,都还正常,最后一个叫什么seme。这个东西啊。这个东西我告诉你。嗯,好像大家没接触过。对吧,看上去好像没接触过啊,但是呢,这玩意儿。我告诉你,他是一个枚举。
07:01
你看,虽然你没接触过。但是。其实这个枚举指的是时间,不是时间啊,是那个一致性语义。看见没?At least once now,那就是at most。对吧,At most。啊,那那么什么都不管好好那就这样,诶你也可以自定义好,自定义完之后呢,你关键问题在于这这你怎么写对吧,这个传进来是一个一个的数据。这个是我们的数据。对吧,这是我们的数据,好,那我们来写啊,这边又一个叫。Producer recorder对吧,哎,他反回要他那怎么写呢,这边看啊。看这他要什么,要一个topic,要一个value topic呢?那就是我们的topic。对吧,那value呢,Value是它。这是我们的一行一行数据嘛,对吧,主题写进来,哎,Elephant那呃,但是呢,不好意思,他要一个什么。
08:04
字节数组啊,所以呢,你这个spring不行,那怎么做呢,Element点。Get that?搞定。搞定了。OK吗?啊,当然你可能考虑一个问题,那我既然自定义了,我得考虑那个浪值的问题,对不对啊,你可以判断,诶,这玩意儿呢,它是不是那纸。啊,如果这玩意none值对吧?呃,你就返回一个nu啊,比如说啊在这边if这个element,它等等于none对吧?哎,如果你写的是个nu值,那怎么办呢?你就直接。直。可以吧,我直接返回nu值,如果你不等于,那那我就拿着它调用get,要不然你要为nu值的话,那完了,对吧,你这个get。能get吗?怎么改的best对吧?你不是控制帧了吗?对吧?这是不是也把浪值这个问题处理掉。
09:03
对吧,啊,那往卡不卡写了一个nu值啊,那就说我能不能不返回不行,那这玩意儿人家必须要返回。人家必须要返回,你当然可以返回一个当值,那你觉得当值不好,嗯,啊,这个还不行,这这个还必须是这个对象啊,你可以把这个你可以这样写。嗯。你往当前这个数据里边写一个什么呢。还是跟上面一样,对吧,上面呢,我们把它处理成了空,那这边呢,你也处理成空。不就好了吗?对吧,那都是空,哎,你也可以这样写,这个就是自定义序列化题。啊,自定义序列化器啊,当然我们现在数据已经是自定义了,而且呢,不可能有那值,因为我们前面都做过滤了。对吧,它不会有那值,所以呢,你直接用它也行。啊,你用它也行啊,但是你用它也可以啊,用这个也行对吧,两种都可以啊,就是因为我为什么要讲这个,就是因为上面我们自定义了这个反序列化器对吧?所以呢,呃,对应的生产者这边它也有一个这个呃,序列化器也可以自定义,我就给大家把这个事情呢,额外做一个说明可以吧?啊就这样子啊好,那工具类写好了,我们就可以调用了,对吧?然后呢,这个主题我得去拿一下啊。
10:25
我就不敲这个主题名字了啊,就直接从这粘一下啊。把这个主题拿过来对吧,好,那配那MY卡卡YouTube点改卡卡那个producer,呃叫配置topic对吧,第一个啊,嗯,然后呢。五个对吧,第二个。Start。然后呢,用start套。第三个display。用displayed。第四个action对吧,Action,那我们用action的topic。然后最后一个DS用。
11:04
好,那这个多好啊,对吧,直接拿过来一改结束了。OK吧,啊,这个就搞定了啊。啊,那这个测试呢,咱们。先这样,正常来说,我们是不是应该Mo数据,然后呢整体去做测试啊,但是我说了Mo数据呢,它的一个。不利于测我们这个结果对吧,因为我们做了新老用户校验,看这一变不变对吧?呃,这个脏数据看能不能出来,所以呢,我们先手动做测试啊,这干什么事呢,我先自己往这里边输数据啊,来先搞一个。生产者。知道卡不卡啊啊注意啊,这个我上午集群没关好,我就留着ZK跟卡夫卡对吧,所以ZK跟卡夫卡我就不用起了啊好。B。卡不卡,然后呢。
12:01
嗯。哎。卡卡。呃,叫哎,刚才没用啊。哎,我刚才输他不提示啊,它应该有多个那个S,呃,Producer对吧,然后。类似。好,102。9092对吧,杠杠啊,咱们的主题呢是。Log啊,我们手动往这里发啊,啊同理我把这个呢,也给他保存一份啊,因为以防万一我们后面可能还需要这个东西,对吧,我在这儿也放一份一个呢,消费者好,那我接下来可以利用它了。还得开。五个对吧,开五个啊,分别放我们五个主题,好好,那这边呢,CD。
13:06
诶,他本身就在这个。卡不卡,这个卡不卡好CD。卡卡。啊呃,启动页面这个呢,我们用来做曝光。曝光对吧,嗯,这个呢是动作啊,最后一个我们放错误。好。第一个我拿这个啊往下翻。嗯,那第一个页面吧,我们按顺序来啊,第一个页面。或者说呢,我这个啊,先把它。都给上啊,这样的话就不用来回粘了,好第二个。是启动。
14:00
啊,第三个。找不到。Display。第四个。Action最后一个。最后一个AR,好,那我再开一个窗口,我有个事情跟大家说明一下。呃,因为我这边呢,集群我之前就跟大家说了,我是一直在复用的集群,对吧,所以我这个主题呢,我都是有的,那你们呢,肯定会有一个主题没有,比如说你的主题都不存在对吧?那呃,假如说这样的一个主题,你呢,启动的时候会看到这个警告来。对吧,但是你不用管没关系,因为我们生产者他会自动创建主题,这个警告呢,就是告诉你,你这个主题没有,你看我随便说的,我没有这个主题,对吧?所以我把这个东西跟他说明一下,你晚上测的时候你跟我不一样,因为我这没有打印警告,对吧,你晚上呢,测的时候一定会有这个警告,对吧,那不用担心,你不用管。
15:01
你不用管晚上不要不要说没记住这个事儿,然后忘了还来问对吧,我这怎么有警告啊,就我这没有警告你那有警告不要问这种问题了,好吧,啊,我跟你说了,跟你强调了一下这个事儿,因为这个主题呢,你是没有的,我呢都有啊,所以呢,会出现这种情况,OK吧。好,那咱们的23456分别是page start,然后display action加这个AR对吧?好,那把这个提起来。啊,这边呢,也会做一个打印对吧,我们去找一个数据,首先呢,我先测那个脏数据,对吧,我就这样,我就只出这么多,最后一个括号我不要对吧,这是脏数据对吧,我们先测脏数据,看这个逻辑能不能过啊。好,这边呢,没有报错,那我们先在这边输一个脏数据回车。那这里边呢,都没有数据打印那就正常了,对吧?啊有就不正常了啊,那应该在哪呢?在这边打印什么叫dirty。
16:06
对吧,这第一个功能我们测完了啊,第一个功能测完了,对吧,它是一个脏数据,好,那接下来看一下错误数据啊呃,咱们呢,这边是有一个错误数据,哎,这个是错误带着什么。Start对吧,好,那错误加start,我这个粘完整了啊,看大括号,大括号我是完整的粘起来的啊。C。然后呢,还是在这儿输。回车。那么他将会在这个start这打印一个数据,而且里边谁没了,ER没了,因为我们把ER移除了对吧?好,那错误也会打印一个错误呢,我没有做任何处理,所以呢,它是原封不动的,整个数据都来了啊,那我们启动跟错误看到了对吧?好,那接下来呢,再搞一个。这个数据,那这个数据就复杂了,对吧,它是错误加页面,且这个页面里边包含了display和action对吧?好,那我们把这个刚好把这个输进去。
17:07
回收。啊,那你看。页面。曝光动作加错误都有了,错误呢,应该是原封不动的数据对吧,而。页面。没有了E,没有了display,也没有了action,因为我们都把它移除掉了,对吧,这边跟这边都是压平之后输出的来看啊,哎,它是一小段一小段的数据。看见没对吧,这边也一样的,诶action呢,只有一个动作,只有一个对吧,没有问题好。那接下来。我们测一个什么呢?还有一个东西没测,就是那个一能不能变为零的一个问题。对吧,就是那个一能不能变为零的一个问题,好,那我们再找一条数据啊,找一个is new。等于一的。
18:01
嗯。好,那我就拿这一条。可以吧,我就拿这条数据啊,你随便找一个就行了,那我把这个呢,这样啊,这个数据呢,我得其他的好说,这个数据呢,我得粘过来给大家说明啊,首先呢,我把这个数据输进去。好,我把这个数据输进去,它是什么,它是启动对吧,启动应该在这打印啊好输进去。这是一个启动日志,那么此时呢,它是不是还是一样,对吧,原封不动,因为这次mid。跟上一个mid不一样,对吧,好啊,那接下来呢,我们继续。如果说我把这个改一下,我改成四。大家告诉我它是一还是零?我输进去啊,他还是会在启动这打印啊,他已经出来了,它是一还是零告诉我。
19:03
如果我们的代码没错。这打印出来的是一还是零?我我就是把这个秒数从三秒改成四秒。是一还是零?啊,你看答案又不一样了,有一有零啊。嗯。一还是零啊?啊一的更多对吧,好,那我们看一下它还是什么。还是一啊,很简单,因为没跨天对吧,我只加了一秒,因为没跨天啊。因为没跨天好,那如果说我把这个数据改一下,我这样改。我也不搞什么,跨一天我也不知道。啊,是不是快一天对吧,那咱们这样,我直接把一六改成一七,可能都跨年了对吧,我把一六改成一七,我把这个数据输进去看啊,原始数据这都是一,我把这个数进去。
20:04
它打印的是零还是一?还是在启动这打印,它是零还是一这个时候。这很明显了吧?MI没变,时间呢,绝对垮天了。绝对跨天了对吧,我都把1716改成一七,那可能跨年了对吧?啊,搞不都跨世纪了。看注意啊,输进来的数据是一,输进来的是一。输出的。是零对吧,17513,我刚才改的这个数据对吧,所以到这一步为止,我们是不是把所有的情况都。测完了。对吧,那说明我们的代码呢,整个虽然是一次性写完的,但是呢没有问题。OK吧?OK了啊,咱们就这样子的一个情况啊,全部就搞定了啊。
我来说两句