00:00
好,那接下来呢,在看这个这个发表之前,我们之前还遗留了一个问题,就上午有同学问的啊,什么问题呢,就是我们上午啊在做测试的时候,我说要先启动这个贝DB啊,然后呢,在启动弗Li CDC,因为这一次弗Li CDC启动之后立马就有数据了,对吧?所以呢,让大家先启动这个被DB,主要原因是在于我们被CD当中是有两个流对吧,一个主流,一个广播流,呃,那这两个流呢。只要谁有数据来了,都会进行处理,所以如果咱们掀起弗林CDC,那我们卡普卡当中就有数据了,呃,那这个时候呢,启动我们的被CV有可能主流数据先来,也就是说主流数据在来的时候,我们广播流数据还没来,就是配置信息还没有,那么这条数据就丢了。对吧,所以我们自己做测试的时候,我们先起的这个被CD,然后再去起这个弗利CDC,好呃,那如果说公司当中比较纠结这个事儿呢。
01:12
他说就要随便起,那大家想一下这个地方我们应该怎么处理啊,我让大家自己去思考一下,对吧。这个地方,我们应该如何去处理这个事情呢?有没有同学来说一说,有什么好的思路?将从卡夫卡。消费的数据保存到状态,或者在open加载table process。嗯。还有没有同学说的呢?
02:07
还有没有同学有思路对吧,都可以说一说,让大家自己去想的呀,对吧,没有思考这个问题吗?只有浩宇一个人说了呀。只有浩宇一个人思考的这个问题,其他人都没有思考什么。一个人都没有思考呀。啊,其实浩宇的方法没问题啊,但是第一个不对啊,你保存到状态里边,那你什么时候取呢。
03:01
因为我们第二个是一个理啊,它数据不会有读完的这一课。对吧,它不会读完,所以用第二种啊,在open当中去加载这个table process,这个是可以的啊,背CB,比方说在我们的,呃,这个process,对吧?Table process在open这里边,我们先读一次,用GDBC在这啊使用GDBC的方式来读一次这个数据,把它写到map里边,把它写到map里边,然后在这边判断,如果说它为none了,那我先看一看这个map里边有没有,如果map也是none,那我就可以认为这个东西不存在了,对吧?啊,不存在了,这是种思路啊,就是第一种在open里边你可以加载一次,把它写在map里边,呃,还有一种可以怎么做呢?就这边我们读到了,不是none吗?对吧?走else逻辑是,那不要着急输出啊,去直接访问一下百色,在这儿直接拿着我们的这个组合key。
04:04
这个K对吧,拆开这个K呢,是在MYSO里边的主键。是不是MYSQ主件了对吧,这张表你去访问一下,买搜Q去查一下,看这个K到底存不存在。啊,到底是否存在。对吧,如果说还是不存在那。就打印不存在就好了,对吧,能听懂这两个思路。这两种做法OK吗?没问题吧?啊,大家知道一下,这个是可以的,这两种方式都行啊,因为呃,Open方法里边为什么可以呢?因为你要知道,呃,我们刚才说的那个问题出现是在于process broadcast element跟process element这两个方法,他们俩调用不分先后顺序,哪个流有数据,那就先调用先走哪个,对吧?但是open生命周期方法它不一样,它一定在我们的process broadcat element以及。
05:12
Process I的这个方法之前对吧,它一定在这个之前去启动的啊,一定在这个之前去启动的啊,啊当然其实在open这会更好一点啊,会更好一点,好在哪呢?因为在open这为什么更好一点呢?在这儿加载一次对吧?把这个表呢,一键它的更好的在于这儿,因为如果说我们通过JBC去查询的话,呃,那很有可能这个数据从广播流还没有加载过来,也就是说很有可能这个表还没创建对吧,你数据来了,表没创建不行,所以在open这个方法里边写。加载一次,读取一次,这个是最好的一个方案。OK吧,这个并不难啊,对吧,但是没有人去想啊,只有那个郝总他他想了一下对吧?啊,其实其实这个这个问题倒不难,对吧,大家稍微想一下啊呃,能理解了,最后我们说的在open里边写更好吗?这个事儿能理解吗?比直接通过JDVC访问更好,它的点就在于可以见表,对吧。
06:20
我可以加载进来去见表。OK吗?这块OOK的话我就过了啊,对吧,这是一个小的一个问题。
我来说两句