00:00
好,那接下来我们进入到2.5这一节,呃,在本节当中,我们需要学习和掌握数据仓库当中每一层的建模思想啊,那这些思想它的主要作用啊,说的通俗一点,其实就是指导我们如何建表啊,那在搭建书仓当中的每一层的时候呢,我们都需要去解决这样的两个问题,那第一个问题就是确定我们需要创建哪些表,第二个问题呢,就是确定诶每张表的表结构啊,那确定呃,每张表的表结构呢,一共包含三个方面的内容啊,那分别是确定每行数据指代的是什么,确定表的字段,以及啊这个表的分区规划。啊好,那现在呢,我们先看第一层ods层啊,我们先简单回顾一下ods层的职责是什么啊,那前面我们说过,那他的职责就是保留原始数据,不做任何处理,呃,那ODI层应该如何建表呢?啊,由于ODI层啊,它会存储两类数据啊,一类是用户行为日志,还有一类呢是呃关型数据库当中的业务数据啊,所以在这儿我们分开讨论啊,那现在我们先讨论用户行为日志。
01:11
啊,那首先那首先啊,我们先明确一下,呃,用户行为,用户行为日志,那它现在的存储形式是什么啊,那我们简单回顾一下,用户型日志呢,它会通过我们那个flu加卡夫卡加flu的采集通道,对吧?那最终以一个压缩文件的形式存储到HDFS上啊对吧?那这个呃,HDF的文件呢,它里边包含了所有类型的用户型日志啊,然后这个文件当中每行数据啊,其实就是一条完整的日志啊,那这就是我们现在这个用户行为日志的存储形式啊,那所以说咱们ods层要想保存原始的这个日志啊,那我们应该如何去建建表呢?啊好,那现在我们先解决第一个问题啊,就是需要创建哪些表。
02:01
啊,创建哪些表啊,那其实这个问题比较简单啊,那由于现在我们所有类型的日志啊,都混杂在同一个,诶用这个日志文件当中,那所以说我们要想保存原始数据啊,我们不需要建太多的表,那其实只需要创建一张日志表即可啊这是第一个问题,那接下来我们解决第二一个问题啊,那也就是说确定我们这张日志表的表结构是什么样的啊,那首先我们先确定一下呃,它的每行数据是什么啊,这个相对来说比较简单啊,刚才我们提到在日志文件当中,每行数据是不是就是一条完整的日志啊啊,那所以说我们日志表的每行数据与之对应,那也是一条日志啊,每行数据也是一条日志,OK,那接下来我们再去继续往下走,那接下来我们要确定的呢,是这张日志表当中的字段啊,字段是什么?那其实要想保存这个原始数据,我们只需要是不是有一个死转类型的字段就可以了呀,对吧,一个字符串就能够。
03:01
保存啊,一条完整的日志啊,那这是它的字段相对简单,只需要一个死string类型的字段就可以了啊,那接下来呢,是最后,呃,也就是最后啊,最后就是咱们这张表的分区规划啊,在这边我们是如何规划的呢?啊,在这儿我们按天分区啊,也就是说呃,Ods层的日志表呢,是一个分区表啊,按天分区啊,那它每天的分区里存放是什么呢?很简单,存放的就是诶,我们当天采集的用户行为日志。啊,那这个呢,就是ods层日志表的建表思路啊,我们最终总结一下,那ods层日志表我们只需要创建一张表啊,只要创建一张表,那这张表呢,诶,我们只有一个字段啊,就是一个死针类型的字段啊,那它的每行数据呢,就指代的就是一条日志啊,那它的分区如何规划呢?按天分区啊,按天分区,每天的分区当中存储当天产生的用户行为日志啊。那接下来我们再来讨论一下业务数据啊呃,那首先我们也是先明确一下业务数据现在的存储形式是什么啊,简单回顾一下,那业务数据呢,我们是使用scoop从关系型数据库买circleql当中啊,把数据同步到了HDS上,那对吧?那当时我们同步了my circleql当中的很多张表啊,那每张表就对应HDFS上的一个文件对吧?啊,那接下来我们先来看一下这个文件里边的内容是什么样的啊,那这个文件里边的内容啊,每行数据它所对应的其实就是呃买S当中的每行数据对吧?啊,那还有一点就是在呃,H Di这个文件当中啊呃,我们每个字段实际上是以特定的分隔符分割的,对吧?
04:44
啊,咱们这儿之前应该用的是杠T啊,是用它风格的,那所以说实际上我们现在这个关系型数据库的数据啊,在HDFS上是一种结构化的形式存储的啊没错吧?啊好,那我们现在要想保留这个原始的业务数据,那我们应该在ods层如何建表呢?
05:04
首先第一个问题,那就是建哪些表,这个问题其实很好回答啊,那建哪些表是不是完全取决于我们同步了哪些表啊,对吧?你从MYSQL当中同步了哪张表,那在ods层就要对应着是不是建一张表啊啊所以第一个问题很简单啊,就是参照啊,咱们MYSQL就可以了啊,MYSQ我们同步了哪些表,我们就建哪些表啊,这是第一个问题,第二一个问题啊,就是表结构,那表结构呢,我们首先先确定每行数据是什么啊,那实际上呃,咱们ods层业务表的每行数据是不是也应该跟呃,MYSQ当中对应的那张表保持一致啊。对吧,MYS里边,呃,每行数据是什么,那ods层那它的每行数据就是什么,那所以这个问题也比较简单,那其次呢,其次呢就是一个字段,那其实字段是不是也应该跟买色当中的表保持一致啊,我们同步了哪些字段,那在啊这个ods层我们创建表的时候呢,就需要去创建哪些字段。
06:04
啊,那这个问题也解决了,那最后一点,那就是这个分区。啊,那ods层的业务表呢,我们在这儿也是按天分区,也按天分区啊,那同样是每天一个分区,每天一个分区,那每天的分区里存储什么数据呢?啊,很简单,每天的分区存储的就是当天从关系型数据库同步过来的数据。那这个呢,就是呃,业务数据的啊,这个呃建表思想啊,那到现在为止,我们就把这个ODI层啊,啊,它的这个呃建表思想啊讲完了,那其实这个很简单啊,Ods层我们在建表的时候呢,其实没有太多的逻辑可言啊,那全都是参考什呀,全都是参考我们采集项目啊,同步过来的数据对吧,那数据的形式就决定了我们这个ods层表的形式啊OK,那ods层我们就讲完了。
我来说两句