00:00
好,那接下来呢,我们聊第二个问题,刚才我们说了第一章当中解决两个问题嘛,第一叫。为什么要分层?第二我们分几层,每一层又是干什么事的,对吧?我们要搞清楚这个事儿啊,那这是一个PPT啊,我把这个模板打开,因为在word当中打开一个PPT,它如果不打开模板的话,它会比较慢一点啊,所以呢,我们先打开模板,然后呢再来看这个东西,好呃,那第一个ods层原始数据对吧?那我们就分为日志数据和。业务数据,也就是我们所说的行为和业务这两块,对吧?好,那我们要这样聊一下,刚才也同学提到了,其实我们这个数据呢,要放到叫卡夫卡当中。啊,我们要放到这个卡夫卡里边,那大家可以趁这个时间去思考一下,我们为什么要放卡夫卡呢。对吧,可以想一想。因为之前在离线数当当中,我们的数据呢,是放到这个have里边的。
01:05
而现在呢?我们要给它放到卡夫卡,那是因为我们要做实时计算了。对不对,你放到have肯定不现实的,所以呢,因因为要应对这个实时业务,我们要将数据呢放到这个卡夫卡当中。啊,要放到卡夫卡里边这个点。这是第一个,这个应该比较好理解吧,很简单对吧,好,那第二个叫DWD层。DW,那由于我们数据呢是放到卡夫卡的,所以我们要消费这个卡夫卡数据,对数据呢进行一个分流处理。好好,大家想一下,在flink里边我们应该通过什么,哪一个知识点来进行分流处理。思考一下,可以把答案呢,写在我们的弹幕里边,对吧?啊,等会呢,我们可以统一的去看一下,我们可以通过什么来做我们的分流处理啊。
02:01
哪个知识点。哎,对了,有的同学可能已经回答出来了,对吧?啊,那就是我们的叫测。输出流吧,哎,测输出流可以达到我们的分流效果啊,分流效果好,那首先呢,这里边我要跟大家说的是像日志数据。啊和DWD的。中间的事实表。啊,事实表我们是放到和业务数据当中,事实表我们都是放到DWD层的,而维度表大家也接触过,对吧,我们呢,把它取一个名字专门的叫dim层。啊,首先表明呢,它是维度数据。表明它是维度数据好,那在这个实时数仓当中。啊,我们不光是这个点。
03:02
还有。对吧,还有什么呢,我们刚才所说的日志数据,还有业务数据当中的实时表呢,我们叫DW层没有问题,但是呢,这个数据我们是给他放在卡夫卡的。而刚才我们所说的属于dim层,也就是说维度数据的这一部分。对吧,针对于维度数据的这一部分,我们是给它放到。好,大家就思考一个问题。我们为什么不把dim也放到卡夫卡里边?对吧,我们为什么不把这个数据也同样的放到卡夫卡里边。而要选到另外的框架啊。那我们想离线输仓,我们事实表和维度表不都是放在have里边的吗?为什么到实时数仓那边,我们就把这个数据一个放到卡夫卡,一个放到H呢?
04:08
对吧,大家呢,可以一起来思考一下这个问题。啊,其实这个呢也比较简单,它简单在哪呢?我们就很简单去思考一个问题啊,思考我们h base数据。对吧,或者说我们维度数据。未来怎么去用?你想离线数仓维度数据你未来是怎么用的,你之前。对吧,你只要把这个问题想清楚了。就很简单了。啊,那我们一块来看一下啊,对于维度数据而言。在离线数当中,我们是不是事实数据来了?然后去关联。也就是说要做join的。
05:04
要去关联我们的维度信息,将事实信息呢,补充的更全一些,对吧,我们要做的这个事情好,那所谓的去join,实际上是不是我们要根据事实表当中,比方说这边有一个用户用户表user for,对吧?那join的字段肯定是这张表里边的ID,这张表里边的UID吧。好,那实际上我们可以看作是事实表,根据一个ID去查维度数据,然后把维度数据补充到事实表里边。是不是可以这样去看。没问题吧,啊,我们可以这样的去看待这个过程,也就是说事实表要根据ID去查维度数据,然后补充我们的事实数据,这也是我们对于维度数据的一个用法,那我们再回到实时数仓当中来。
06:01
啊,再回过头来,我们想一下,为什么我们要把这个放到。那如果说跟离线收仓当中一样,离线收仓都是放大have,那实时数仓我就都是放到卡夫卡。对吧,都是放到卡夫卡那卡夫卡第一。他数据默认是不是保留七天。对吧,我们很有可能还改的更小1.3天啊,那就算是默认七天吧,或者你改大一点十天,那维度数据你想一下能删吗。我们的维度数据能不能删啊?他不能删吧,你不能说我用户注册了,我今天注册的,或者说五年前注册的,我今天是照样给下订单。那五年你卡不卡能保存吗?不可能,对不对,有个效益队列,我又不做永久保存,所以这第一个它并不能永久保留这个数据,第二个也是很关键的,你要根据一个ID去卡不卡当中查数据。
07:00
好查吗?是不是也有问题啊,对吧,卡卡呢,你可以消费这个数据,按照理由正常消费这个没有问题,但是你要说我根据某一个ID用户ID去查用户主题。这个就不太现实了。对吧,所以呢,这些点告诉我们,我们的维度信息啊,并不能放到卡夫卡啊,那另外至于为什么选到我们聊DW层的时候再去说,那除了h base还有其他的。对吧,还有其他的可以选择的,我们到时候再去看,为什么我们最后选择了对吧?啊,那现在你要知道DWD层数据存储分为两块,一块呢是咱们的卡夫卡,另一块呢是H啊,然后结合菲en尼斯来用的。啊,我们要结合Phoenix来用的,好,这是DWD层,我们聊清楚,那接下来呢,是我们的dim层。啊DM层,DM层呢,就是维度数据,刚才我们说了啊,那接下来到我们的DWM层,DWM层呢,其实我们在介绍整体的课程的时候也说过了,对吧,它是实际上将我们这两个。
08:14
加工处理成DWS的过程当中,一些通用的、共用的部分抽取出来了,形成我们的D。WM。啊,形成了这样的一层啊,这是我们所看到的一个点啊呃,那之后呢,就是我们DWS啊DWS呢,就是根据主题,所谓的这个主题呢,比较简单。对吧,所谓的主题呢,其实就是我们的维度。啊,就是维度啊,就是维度,好那这两层分别存在哪呢?它是存到卡夫卡的,因为还要接着被消费,被加工,对吧,我们说了是这两层到这一层中间结果,也就是说现在呢,我们DWDDM先形成DWM层,然后再根据DWM或者说某一些不需要加工的DWD,直接形成我们的DWS,是这样的一个过程啊好,那DWS呢,最后呢,要轻度聚合,要做查询了,对吧?所以这个数据呢,我们是放到clickhouse里面的。
09:20
啊,这个数据放在克利浩斯,当然现在呢,我们不多聊克利浩斯的事情,因为大家呢还没学对吧,所以我们现在不用关心,那接下来还剩最后一层叫ADS层,ADS层呢,也就是说我们接下来要把DWS可列号组别数据查出来,形成最后可视化的一个结果,但是你要形成可视化结果,那这个上面就是做数据展示,那这里边呢,只是轻度聚合的数据,我们中间明显的还要做一次什么类似于some呀。Count呀,类似于这样的一个操作对吧,那这个呢,我们就形成掉ADS层啊,但是注意这个ADS层呢,由于是实时数据,所以我们不落盘,它不存储。
10:04
直接其实就是我们数据接口。就大家之前写的spring的那个案例,它就是一个数据接口啊,不落盘的,这个是不落盘的,因为实时的落盘没意义,如果说你要那有的说我今天做的事实,我到了明天我要返回来查今天数据,那你不落盘不又得重新计算吗?对,可以重新计算,但一般也不会重新计算,那都到了第二天了,我们的离线收仓是不是把这个需求也算了。所以要查历史数据很简单,我们就找离线数仓就好了,查现在的数据呢,找实时对吧,所以分两套系统来看,也就是说其实我们离线数它跟实数它这个数据是一样的对吧,需求绝大部分也是一样的啊,需求绝大部分的时候也是一样的,这个要注意一下啊,这个一定要清楚啊,不能搞错了。好吧,这是我们所看到分层啊,分层整个一个介绍就是分了这几层啊,实际上呢,应该是五层。
11:05
对吧,这个呢是同一层啊,这个是同一层啊,只不过说它俩存储的位置不一样啊,但是他俩是同时生成的,这个要注意一下。
我来说两句