00:00
好,同学们,我们接下来给大家讲需求二,广告点击量的实时统计,那么这里的统计呢,其实是对每天各个地区,各个城市,各个广告的点击总流量的统计,并将结果存入到买SQ当中,就意味着它是以天为单位,而不是以一个采集周期为单位,所以我们就需要把每个数据的状态保留下来,但这个状态保留下来并不像我们之前所讲过的那个叫做什么啊,检查点的状态对不对,那个会产生大量的小文件,所以我们这里呢,是要将我们的数据保存到买蛇口当中,是这样的啊呃,所以最基本的思路呢,就是把每一个采集周期的数据呢给他诶拿到,拿到之后呢,再和买SQL的数据呢,进行一个合并更新,其实就够了,那这个呢,我们首先先把买SQL的表现创建出来啊,这里咱们来拷贝,拷贝以后呢,在我们这里呢,咱们点一下啊,把这个拿过来放这边,嗯,可执行。执行以后,我们先把表给它创建出来,你创建出来以后呢,我们就是不断的汇总数据,然后把数据给他更新就可以了,那么这里呢,我们来拷贝啊,咱们来拷贝我们的这边,诶拷贝以后呢,我们写上一个12,这是我们的REQUIREMENT2啊,就是这样,OK,点击它,嗯。
01:13
然后放过来,放过来以后呢,到了我们这一步啊,到了这一步其实就拿到了我们的卡夫卡的那个数据,其实就是广告的点击数据啊,那这里呢,我们来啊,把这块咱们也拿到我们这边会有一个样例类,这个我觉得拿过来也是可以的啊拷贝嗯,好,我觉得看看啊,咱们放到这边,然后呢,把我们前面的这个代码呢,咱们稍微的参考一下。首先把这个咱们拿过来啊,拷贝拷贝之后这个单不要了,那我现在呢,已经拿到了我们的数据,那这个数据我们现在要做一件事情,做一个什么事情呢?就是说我们要做统计,那么你做统计的话,那首先就得拿过来了,拷贝啊拷贝,拷贝之后我们来写上咱们叫做点啊,叫做点map啊,其实我想想咱们是不是可以直接在这个地方就做统计呢?那其实也就没有必要再去做封装了,对吧?行吧,不管他吧,咱们先来啊。
02:06
拿过来啊,咱们放到这边,我们写上咱们它咱们写上一个date,好翻过来,那我们来看一看啊,咱们要做统计的话,它这里面呢,会有很多的这些呃,需要注意的地方,第一个是天,第二个是各个地区,第三个是城市和广告,所以天地区城市广告我们都需要去考虑它,那我们这个key就多了啊,那这里呢,我们来看一看,那么所以啊,这里应该是一个我们的一,那这里呢,应该包含的是我们的day,我们的这个叫做呃区area和那个city,还有那个对吧,那应该把这些,诶对了,它这里面还会有一个啊天地区城市和广告,这里没有用户啊,没有用户,那没有用户的情况下,那我们这里呢,就是把那个广告加上就可以了,好了,那我这里呢,给他来我们写上啊,咱们叫做day,嗯。然后呢,在我们的这个地方啊来,然后呢,写上咱们的这边。
03:05
然后呢,我们的区域,我们的,哎,来区域啊来区域,然后呢,我们的city,然后我们的广告OK,拿过来,那这个都简单了,咱们叫date点我们的广告,然后这个呢是date.city然后这个呢是我们的date.area啊咱们的区域好了,那这个地方呢,就是我们的时间,这个时间我们说的是以天为单位的,这个咱们之前写过了啊,所以我们直接参考一下,咱们这边是写过这个代码的啊,所以咱们直接拷贝在这,嗯。好把这个呢拿过来,拿过来以后咱们这边就有了。好,点击OK啊,点击完成以后,现在呢,我们只需要去汇总就可以了,咱们点啊咱们叫做reduce,我们的beck key,嗯,下划线加上下划线,这样的话呢,我们合到一块儿,诶来我们写上叫reduce,我们的DS,咱们现在呢,就把结果呢汇总在一块了,你汇总在一块儿的话,其实你是应该跟什么,跟我们数据库当中的数据做一个更新合并,对不对,所以我们来拷贝。
04:09
来拷贝啊,拷贝拷贝以后呢,我们来这里呢,写上点,我们叫for it RD,我们循环便利,那我们循环便历的时候,这个对于我们来讲,我们应该写上咱们叫RDD,然后呢往这边放,记住了,同学们,咱们在需求一的时候就给大家讲过,它的一个优化的手段,就是你别一条数据一条数据的做处理,对不对,所以我们RDD点我们叫for it,咱们叫partition啊,你以一个分区为单位来统一做处理,所以在这种情况下,我们这里来啊,嗯。把这个地方呢,我们写上啊来咱们写个括号,然后写上一个迭代啊迭代器,OK,然后这个迭代器呢,我们可以来进行我们的for it啊,这个是没有任何问题的,好吧,同学们,那行,那么在我们当前的这个处理过程当中,我们的for,那我现在呢,就可以写上一个case,这个case呢,其实就跟上面是完全一样的,咱们直接拿过来就可以了啊好,拿过来以后放到这边,嗯。
05:09
好,这个呢,就是我们的一个sum啊,咱们就是一个sum了,那么在这里我们首先先把那个连接对象给它拿到,叫JDBC啊,咱们的U点,我们叫get啊,咱们的connection,那你最后呢,是要关闭咱们的connection啊,就是这样的,那然后呢,我们点close,还有一个我们要需要把那个嗯,把它准备好。好,等于我们的connection点我们的prepare statement,那么这里我们要写上circle文,咱们这里呢叫insert啊,咱们的into insert into的话,那我们这个表啊,就是这张表了,所以拷贝拷贝以后拿过来,然后呢,我们写上括号,诶然后写个values,咱们叫做values啊OK,好了,然后再写上我们的括号啊放过来,诶这个不对啊,这个应该把它放到折行啊,咱们的这个字段呢,我确认一下啊,咱们这里呢,组建咱们这个一,诶把这个呢,DT。
06:09
咱们写上啊,咱们叫DT,然后呢area,嗯,咱们叫,然后呢,我们叫做ad广告啊A。好,还有一个叫count。然后呢,这里呢,我们就写上啊123455个问号,好,咱们的五个问号啊,好,但是呢,有一个问题,什么问题呢?万一你之前已经有了这个数据,你是不是就得更新一下呀,所以呢,咱们来这边来写上,咱们之前给大家讲了一个语法,咱们叫做on啊,咱们在这儿叫wlicate key,所以拷贝拷贝以后放过来,如果当你的key相同的情况下,我们应该怎么办,是不是应该更新呢?咱们应该把咱们的count给它更新,所以count它应该等于count,再加上问号,所以啊,我们的circle呢,应该这么来写啊好了,那你这么来写了之后,那我现在呢,就可以在这个里面我对我的数据进行处理了,所以大家看一下来咱们点,点了以后,咱们给它来,咱们叫set string啊set string,然后给个一,咱们前面这些啊,我们准备的都是给大家的字串,对吧,那么我们最后这个count呢,其实是一个我们的数量,那么这里咱们就来了。
07:20
好,那这里最后诶应该是六个吧,六个问号,那么再来一个,那么这个地方应该是我们的int,它是我们的int放过来啊,那这里呢,是我们的六,然后五,然后呢,我们四然后三,然后二,诶好了,那这个呢,就把这个day咱们拿过来,这个area放过来,还有city。还有我们的广告,诶放过来,那这个呢,就是我们的上,诶放到这边求和嘛,求和之后,那我这边只需要去什么呢?我们点咱们叫exte,咱们的update就可以了,那这样的话,每条数据过来,我们这里呢,直接操作,直接操作,首先连接对象可以重复使用,第二个我们这里呢,是以分区为单位创建连接性能呢就得到了提高,诶就是这么回事儿啊,好了,然后在我们这边呢,给他来咱们点close一下嗯就可以了,嗯,行了,同学们,我们这边基本上就差不多了,其实你要再想优化的话,这边做批处理也可以啊,咱们就不做了,咱们这里呢,给大家咱们来看一看啊来。
08:20
那现在呢,我们在这边就给他来了啊,咱们就给他来了,我们现在呢,给他点击我们的这个,我们来生成我们的模拟数据,生成完成以后,我们这边呢,就不断的去采集,不断的去更新,我们看一看效果就可以了啊,先看一看咱们这边的这个启动啊。好同学们,现在数据呢,已经开始生成了,那我现在呢,就把咱们这个程序呢,我们跑一下啊,咱们运行运行以后,他在不断的去轮询,轮询的过程当中,我们现在就可以看到数据应该往里面增加了啊,咱们可以稍等一下。好,那我们这这边呢,我们也不断的刷新一下,咱们刷新看一看我们的数据啊来好,大家可以听到我们现在的这边呢,已经开始呢插入数据了,刷新以后大家会发现我们的数据是不是在源源不断的过来啊,它的抗呢在更新对吧?诶就是这样的啊,所以呢,从我们当前的这个角度来讲的话,我们现在的数据呢,已经在不断的去更新了,只是这个文字呢有点乱码,这个没关系啊,咱们现在呢,先把这个数量呢在不断的更新,其实就够了啊好了,这个呢,我们先说到这里吧,好了,同学们。
我来说两句