00:00
好,上一节我们讲到了ods层日表的数据装载啊,那数据的装载就摆在这个位置了啊,其实非常简单,没有太多的逻辑可啊,那现在我们来一起思考另外一个问题啊,就是我们的呃,日志采集通道呢,它每天都会源源不断的把新产生的日志写入到HDFS这个路径下。对吧,那我们就得每天把新写入的文件load到ods log这张表一个新的分区当中啊,那我们还得对每天这个新产生的分区的数据啊,创建索引,那也就是说这两个语句啊,我们需要每天重复执行。啊,但是每天执行的这个语句啊,又不完全一样啊,主要是因为什么,因为我们的语句当中啊,是有这个日期的,那每天执行的这个日期肯定是不一样的,对吧?那所以说如何去提交这个任务,那成了一个麻烦事。啊,那我们总不能每天去手动的修改一下这个语句当中的日期啊,然后去执行这个任务啊,这个就太麻烦了啊,因为我们整个数仓不只有这一张表,我们后续还会有很多的表,对吧?那我们总不能每张表都去手动的改日期,然后去提交任务啊,显然不是这样的啊,那咱们这儿怎么能够去解决这个问题呢?
01:17
啊,那其实最方便的一种方式就是将这个呃语句啊,给它封装到一个shell脚本当中啊,然后我们在shell脚本当中啊,维护一个日期变量啊,这个日期变量呢,它是每天自己去计算啊,计算什么呢?计算当前日期前一天的这个日期。啊,拿到前一天的日期之后呢,那我们再把这个日期变量替换到我们这些语句当中啊,那这样一来,这个晒要脚本就能够每天重复执行了,那当然你每天去执行它的时候,实际上它计算的就是前一天的数据啊,那我们的数仓本身就是每天计算前一天的数据嘛,啊OK,那这就是我们接下来要做的工作啊,我们需要有一个这样的一个shell脚本啊,那这个shell脚本呢,在文档当中已经给大家准备好了,那现在我们把这个脚本拿出来一起来看一下啊。
02:11
好,那现在我们一起来看一下这段代码,首先我们先看这个位置,呃,APP等于J帽,这其实就是声明了一个变量啊,那这个J贸的指的就是我们数据仓库在have当中的那个database名啊好,那接着往下看看一下这段代码,这段代码呢,大家应该不陌生啊呃,因为在之前我们所编写的呃,Scoop同步数据的脚本当中,那其实就有这样的一段啊好,我们再来回顾一下它的逻辑啊,那这里边首先判断了一下DOLLAR1,也就是第一个参数是否为空啊,如果不为空,那我们就将DOLLAR1的值赋予do date这个变量,那否则的话呢,那我们就使用date-D减1DAY加百分号F啊这个命令去计算前一天的日期啊,然后把前一天的日期赋予do date。啊,这就是这段代码的逻辑,其实很简单啊,好,那这个do date呢,其实就是我们刚刚所提到的我们要维护的那个时间变量啊好,那接来我们往下看啊,那这个呢,是我们刚刚所编写的那个漏语句啊,那只不过呢,我们把这个漏语句当中所有的日期都用Dollar do date替换了啊好,那下边呢,我们使用hi-E去执行上面的这个S语句啊然后最后呢,呃,我们再使用海这这个命令呢,对我们这个数据创建索引。
03:32
啊,只不过这个呃,海子布这这个命令当中,我们也是把所有的日期都用do date替换了啊这个大家要注意一下,好,那接下来我们再来呃,说一个小的注意事项啊,就是在这个circle语句当中啊,所有的表明前边,哎,我们需要加一个库名,那为什么呢?因为have-E这边如果我们不指明当前的库是什么,那它默认使用的就是default库,那所以在这呢,我们最好给它加一个这个库名的前缀啊,或者说如果你不想加前缀,那OK,那你就得在我们这个circle的最开始的位置切换一下数据执行一个啊是这样的啊好,那这就是我们呃ods日志表的数据装载脚本啊,那现在呢,我们需要把这个脚本创建出来啊,CTRLC粘一下呃,然后呢,把它放在我们呃,102这台节点的加目录的B目录里边。
04:26
好,那现在我们给这个脚本起一个名字啊,那脚本的命名规范我们之前讲过,那我们的规范是什么?是从数据源到目的地,然后后边再加一个这个DB或者是log的前缀,对吧?那咱们现在应该是从哪到哪,应该是从HDFS到ods对吧?那而且我们现在这个数据呢,是日日数决定,所以加一个log的后缀啊,然后回车。啊,把刚才这个脚本的内容呢给它粘贴粘贴进来,OK,那没有问题的话呢,我们执行shift在Z给它保存一下啊,那完之后呢,我们需要对其加上执行权限啊,趁mode加X,呃,HD FS to OD log.sh啊,现在咱们回车啊,那现在这个脚本呢,我们还不能去执行啊,为什么?因为我们现在还没有去创建ods层的这张表,对吧?那现在呢,我们把这张表给它创建一下,来执行这个建表语句。
05:21
好,那现在我们看一下这个左边啊,有没有出现我们刚刚创建的这个表啊,好,刚刚执行完成啊,刚刚执行完。好,那现在大家可以看一下,呃,左侧已经出现了我们刚刚创建的ods log这张表了啊好,那现在我们去执行一下这个装载脚本,那看一看这个数据能不能顺利的导到我们OD log表当中,那我们执行点杠应该是HDFS到ods log点对吧?那完之后呢,我们需要给他传一个日期2020杠零六杠,诶幺四,那现在我们回车。我们把第一天的数据导到这个日当中。
06:01
啊,此处我们需要稍微等一下啊。好,视频呢,先暂停一下啊,现在这个任务已经执行完成了,我们去group当中查看一下ods log表当中有没有这个数据被写入啊,双击查看一下。好,大家可以看到啊,那我们第一天的数据,也就是零六杠幺四的数据已经写到了ods日志表当中啊,那现在我们第一张呃,OD层的表就结束了啊。
我来说两句