00:01
好,同学们来,我们继续往后说啊,呃,接下来的这个问题呢,就是回到我们一开始这个说到的啊,就对于这个表清单的一个这个维护。大家来想啊,呃,现在我们为了去做这个分流,因为我的分流呢,是要区分你的这个事实表和这个维度表的,他们要分流到不同地方,你的事实数据呢,我给它分流到这个卡不卡中,你的维度数据呢,我给它分流到这个red中,所以说当我们的这个实时处理,我拿到你的数据以后呢,我就得去判断你是事实数据还是维度数据。那我们判断的依据呢,就是通过你的表的名字来判断的。因此我们就得有一个。事实表和维度表的一个清单,然后呢,供我们进行这个判断。好,你这么写,现在这个效果也能够实现,但是呢,不好的点在哪里呢?就是你这里面到底写哪些表。对不对,假设啊,现在我有这个30个,我有30个这个实时表,我有这个十个维度表,那你说我就把30个实时表都写进来,把十个维度表都写进来。
01:06
这样行不行,就是我一次都给你写上了,就是解决了你这个后顾之忧。这样好不好啊?同学们。这样不太好,为什么不太好呢?因为我们在这个当前这个实时处理过程中啊,有可能我并用不到你所表的数据。那我用不到,那我就没必要把这个手表的数据都拿到我的这个DW里面去做处理啊,对吧,或者说放到我这个DM去做处理啊。对吧,这是一个点。还有一个点就是假设我现在都能够用得到,那你就把这个30个表都写到这儿了,把这个十个表都写到这了,但是你敢保证你后面你就不会发生业务的改变,你就不会再去加这个新的表进来了吗?假如说我扩展了我的业务了,对吧,我又加了五个表进来,那你这五个表是不是也得想办法给他配到这里面啊。所以说你不管怎么想啊,你将来这个地方都是有可能发生改变的,那只要改变,像我们目前写这个代码来讲,那你就只能是诶改代码。
02:05
那你改代码带来的问题是什么呀?带来的问题就是你得把你的任务停掉。对吧,诶把你的这个任务停掉,停掉以后呢,改代码,改了代码以后,我再重新把它启动起来。对吧,好,那我问你,你停掉任务的这个时间内。我的实时处理我就不做处理了吗?那我过来的数据你就不接收了吗?这个你能接受吗?对吧,你就先思考一下这个结果你能不能接受,如果说你能接受,那你可以这么去做,没问题,如果你接受不了。对吧,那你就不能说,因为诶我想去动态的改表了,然后呢,导致我这个实时任务停掉了,停掉以后呢,导致的最后的结果就是我的好多数据呢,没有统计过来,最后我统计的结果呢,不对,出现问题了。对吧,就一系列连锁反应就都出来了。OK吧,所以说呢,我们是一定要想个办法呢,把它解决一下,就是我们希望能够动态的去配置这个表情单。
03:04
好,那你怎么动态的配置呢?那就说白了,你肯定是不能把它写到这里面了,只要你是。写死,然后写到你的代码中的,那将来你就一定会涉及到修改。所以说这个地方呀,我们就不能够把它写死了,我们是能够希望诶。我从某个位置去获取它。对吧,就是把这个表的表情的定义呢,脱离出来我的代码。我的代码中不对它的定义,但是呢,我将来是可以想办法把它拿过来的。对吧,假如说我把它放到某一个位置,我能为什么把它读过来,那如果你要修改的话呢,我只需要什么在这个位置去做一个修改,修改了以后呢,它还是能够读过来,那我的代码中我是可以什么实时的去做更新的。能听懂吧,好,所以这个时候你要去考虑一下,我把它写到什么地方比较合适。能明白吧,同学们啊,写到什么地方比较合适?啊,大家想想吧,你觉得写到什么时候比较合适啊?
04:09
啊,同学们。写到哪里比较合适?啊,这个应该能想到一些这个方案的吧,对吧?诶有同学说配置文件好来这是一种方案。啊,这个配置文件,配置文件是吧,配置文件都是在配置文件,OK行,那我们就在说一下这个配置文件行不行啊,假如说我把它写到配置文件中了,能听到吧,我把它写到配置文件中啊呃,这个可以解决对吧,你写到配置文件中以后呢,就相当于什么,每一次我都要什么,让他去重新去加载一下这个配置文件。对吧。啊,你要重新加载配置文件,然后呢,你就能够从这个配置文件中把它读到,但是你改配置文件的话呢,你要想想方不方便去修改。你方不方便修改你的配置文件。
05:01
啊,因为将来我们这个任务大家注意啊,我们这个任务写完以后呢,我们是要去什么把它打包对吧,打包什么扔到你的集群中去跑的,不像我们现在啊,我们是在这个本地跑的,对不对,将来都是什么扔到这个集群中去跑的,那你都打好包了,你扔到这个集群中去跑的,然后你说你要去改配置文件,那你是不是还得。改完配置文件以后呢,重新打个包,再往集群里面扔呢。是不是还会有这个问题啊?能明白吧,虽然说你从代码层面好像我不需要再去什么修改啥了,但是呢,你从整个运行的这个层面来讲,它还是需要去改一些东西的,还是需要去停掉你的这个任务的。能明白吧,啊说这个呢也不太合适。OK吧,好来,那又有同学说了,说放到RA中OK行不行呢?是可以的,因为RA里面我是可以什么动态做配置的呀,我是可以动态往里面放东西。是吧,那你想想啊,假如说我将来呢,让你这个位置呢,你就什么动态的到我的里面去做读取。
06:06
能理解你就算你整个代码,整个代码层面,比如说我打好包了,我打好包了,然后呢,我扔到扔到什么,扔到这个集群中去跑了,对吧,然后呢,代码中的话呢,就比如说我的正行代码,我要什么到你这个RA里面去读好,那假如说我想做修改的时候,我是不是只需要打开你的RA,然后呢,作为一个修改。我的代码是不需要做任何的改动的。能不理解啊,我的代码是不需要做任何的改动的,我是不是可以这么直接。读到你这个东西,然后就能够实时生效了呀,同学们。对吧,就相当于你要找的这个位置,比如说你纯文件也好,或者纯也好,一定要脱离出来你的当前的这个任务,如果说你还是跟你这个任务耦合到一起的,比如说就完全放到我这个任务里面了,那你任务一打包,你就又打到一起了,那你将来想改。那你就得什么重新打一个包了。
07:00
对吧,但如果说我比如说我放到一个,或者说我就放到一个什么外部的一个文件啊,外部的一个文件也可以哈。对吧,这样的话呢,我脱离出来你这个代码,那你这个代码将来只要去读就行了,我改不会影响到你这个代码的一个更改,不会影响到你这个整个项目的一个更改。理解吧。好,那你综合来考虑的话,你说我往文件中放合适,还是往这个red放合适,或者说他们两个哪个更方便一点啊。是不是很明显这个会更方便一点啊,同学们。对吧,啊说说啊,我们可以怎么解决呢?来说一下啊,就是我们什么将这个将你的这个什么表清单啊表清单然后呢,维护到好维护到这个red中,然后呢,我们这个任务中啊,就是这个实时任务中啊,实时任务中,然后呢这个诶动态的什么去获取啊,动态的到red中获取这个表情单就可以了。
08:02
表情单就可以了。明白我的意思了吧,啊,你到它里面去获取就完事了啊行吧,那这个方案有了以后,接下来我们就来看一下啊,那你又要往这个red里面去存了,那你要存的话呢,你用什么类型对吧?你的key用什么,还是那几个问题对不对啊,你的key用什么,然后呢,你的。好value用什么OK,然后你的。呃,这个写入的API用什么。对吧,然后你这个什么读取的API用什么好,你这个过期不过期对吧,又是这么几个问题。好,那类型的话呢,还是来字符串,呃,List set set,哈希。
09:00
能理解吧,好,那你选一个吧。来吧,大家还是投个票吧。你觉得选哪个比较合适?这个应该很直观吧。对吧,这个很直观的啊,这一看就是你要去维护一个表清单,清单清单它里面肯定会有多个表。对不对,它会有多个表,那多个表的话,这一看就是一个一对多的一个场景啊,一对多的一个场景。对不对,那你说你得多的话呢,你用这个字符串还合适吗。同学们就不太合适了吧,因为我们希望它是一个集合嘛,对吧,这很明显就是一个集合吧,说字符串肯能就不太合适了啊,这就想都不要想。对吧,那剩下的这几个其实我们都可以做成这个集合的一个效果啊。对不对。结合效果,那你就再来排查一下呗,呃,再排查的话,就看一下你这个要你要不要求你这个数据是有序的。
10:04
对不对,要不要去做排序。要不要求有序,如果说你不要求有序的话,那这个赛我觉得可以不要了,因为它是什么会给你带上一个死扣,你说我这个表需要做一个什么排序吗?需要做个评分吗?不需要吧,我将来用它只是看一下你里面有没有我对应的表而已啊,说这个贼菜的,我觉得也可以不要。对吧,好,那你这么一分析的话,其实这个哈希你也可以不要,因为哈希它要做成什么fair value fair的value,那你说我就单独存一个表的名字,你说我怎么去搞这个fair value的这个结构呀。对吧,我的value用你这个表的名字,那你说这个field你用什么呀。对吧,你还得单独给他取个名字啊,还是怎么着的。对吧,说逆分析这个哈希题也不要,那最后就落到这两个上面了,一个是list,一个是S。对吧,一个是list,一个是S,那你说这两狗用谁呀。这两个区别就是一个是有序的对吧,然后呢,可以重复的,一个是无序的,不可以重复的。
11:06
用哪个?其实我觉得都OK啊,因为啥呢?因为将来你对它里面的判断就算啊,就算说这里面我出现了两个相同的什么order info,对吧,出现了两个相同的order info了,你说会有影响吗?没有影响,我只是判断你这个集合中将来会包不包含我的某个表,你看看我们的判断啊,是吧,是不是包含某个表,你说你有一个跟有两个我判断的时候结果是不是都是一样的呀?对吧,啊说这个其实都可以啊,但是总归是你有一个肯定更好一点嘛,比如说我这个不小心啊,我这个又放重了,对吧,我原来已经有这个表了,然后呢,我又往上里面加了这个表,我不小心放重了。那我们是不是最终保留一个会比较好一点啊?对不对,虽然说你保留两个也没有什么影响啊,但是我觉得保留一个会更好一点,对吧,所以说呢,你这个综合一分析啊,那应该就是site比较靠谱了。
12:03
对不对。啊,那就site比较靠谱了啊行,那这个site分析出来以后呢,下面K就K什么呀,K就是那就看呗,你你你比如说你维护的是什么,这个维度维度清单表什么事清单表,比如说我就我就这么来叫啊叫。事实表,我叫什么,就叫这个factor tables。对吧,那我这个维度表的话,我就叫这个dim啊Di,然后呢,忒斯不就完了吗。那写吧啊,那value的话就是你这个表的一个什么表的集合啊,就是表集合啊表表明集合,表明的集合对吧,表面的一个集合就可以了啊行,那写入API用什么呀,同学们。你将来比如说你想往这个里面去加东西的,那你写入的话,那said,那不就是I的吗?对吧,那你往出读的话,读的话呢,我们这里面是要什么把它完整的都读出来的啊,所以说我们应该用的什么,用的是它的这个叫做s members啊,对吧,我不知道你们还记不记得啊这些东西。好,那这个过不过期呢?这个肯定不过期了呀,你说我维护好一个清单,我今天用完了,我就过期了,我明天不用了。
13:05
还得用吧,说这个也是不过期的啊行,那我们把这个方案这个分析明白以后呢,来接下来我们就可以。通过代码给他这个实现出来了。OK吧,啊嗯,暂停一下。
我来说两句