00:00
好了,同学们,我们刚才呢,已经把咱们的这个判断黑名单的这个功能啊,咱们做完了,接下来呢,我们就往下来做了,往下来做以后,我们现在等于做到的这个绿色这一块了,就是说我们现在判断我们的用户是否在黑名单当中,如果在我们黑名单当中,这个数据我们不再做统计,对吧,那如果要不在黑名单当中,我们要做一个统计,那么这样的话就得到了绿色的这样的数据,那么绿色的这个数据呢,我们需要往下来了啊,所以同学看咱们继续。那这边会有一个叫做DS啊,咱们的一个统计结果,这个统计结果呢,我们给它来,咱们叫R,就是意味着我们把每条数据呢给它来做操作,所以RDD,诶咱们放过来啊,这里我们来给它放过来,那放过来以后我们说过了,我们的每条数据,我们都应该判断一下它统计的那个结果有没有超过阈值,所以呢,我们RDD点我们的for each,那这个时候我们拿到的就是我们的date,那么这个date呢,首先记住啊,同学们看咱们现在应该是这个样子对不对,那所以呢,其实我们这里呢,应该用模式匹配可能会更好一些,所以我写上一个case,这个case当中我们来就把咱们的数据呢放过来,那么放到这里之后,这个地方应该是一个count,对吧,应该是一个数量。
01:17
好了,放过来之后,我们放到这里,咱们干嘛呢?首先我们的第一个,我们如果统计的数量超过点击的阈值,那就意味着我们这个count呀,我们的判断一下,但这个阈值呀,如果要是按照咱们课件当中是100次呀,稍微有点多了,所以咱们这里少一点好不好,咱们30吧,所以这个阈值呢,咱们写个30啊,然后呢,我们在这写上一个咱们叫if啊来,咱们写上叫做count,如果count它大于等于我们的30,就是你在当前一个采集周期当中就已经超过了预值的话,那啥也不说,把你拉入到黑名单,所以呢,我们这里拷贝,咱们要拉入到黑名单了,对不对,然后呢,写上一个L,那么这个L10是什么意思呢?就是诶你不到30,那你不到30说明没有问题,那没问题的话,你应该干嘛呀,去对我们当前的那个广告点击数量呢,进行更新,所以呢,把这个呢拿过来,咱们放过来啊,如果没有超过阈值,那么需要。
02:18
对当天的广告点击数量进行更新,那所以呢,我们应该看一看咱们数据库里面有没有我们的这个数据啊,什么意思呢?你得判断一下咱们这个里面统计表里面有没有这个数据,那如果有就更新,那如果没有呢,你是不是还得插入啊,所以啊,这又分我们的两个干嘛呢?我们写上啊叫查询。啊,查询我们的统计表数据,那好,那我们再写啊来如果呃,如果它存在我们的数据啊,如果存在数据,那么更新,那如果呢,不存在数据,那么我们新增对吧?哎,那么我们新增数据就可以了啊。
03:02
好,那我们这里呢,就出现这种情况了啊,那咱们继续往下啊,然后呢,接下来咱们再往下走,那么你不管是更新还是新增,其实我们的这个新增,因为已经判断出它的数量不可能超过30了嘛,所以在这种情况下,那么只有更新的情况下是有可能超过对不对,所以啊,我们这个更新当中还要加个超过什么超作呢?就是判断它更新后有没有超过预值,那么如果超过的话,把它拉入到我们的黑名单当中,对不对,所以啊,咱们还有这么一个功能啊,所以说你会发现其实会有大量的一些数据的交互在里面啊。那好了,咱们把这个逻辑呢,稍微的捋了捋,咱们现在呢,看看该如何实现啊,首先第一个,如果统计数量超过点击阈值,那么将用户拉入到黑名单当中去,所以呢,我们这里呢,给他来啊,咱们写上看看啊,咱们试一试,咱们前面的这个地方呢,会有专门的他拷贝连接啊,咱们放到这里,那么放到这里以后呢,来,我们现在呢,给它来一个connect connect啊,咱们的connect,第二我们的close,嗯,记住啊,我们一般是要关闭的,给他close,同样道理,咱们这个也要给它close掉啊,那这里呢,我们说了要给他什么,就是嗯,如果统计超过阈值,咱们要拉入到黑名单当中去,所以呢,我们这里写上咱们叫insert into啊,然后这张表,然后括号啊,咱们就叫user ID,然后value,哎,给他一个问号就可以了啊,咱们就这么写,那这样的话你得传值呀,你传值的话它是个字符串对吧,那咱们,诶我确认一下。
04:34
嗯,咱们的这个U的ID是个差类型,应该是个字物串,所以我们写上一个string啊,咱们写上一个点set,我们的string给它一个一,然后呢,把那个U的咱们传进去就行了,传完了以后开始执行,咱们叫execute update,哎,咱们这么写其实就够了啊好,那你这么写的话,其实本身是没有问题的,记住啊,本身是没有问题的,但是呀。
05:00
我们要考虑另外一种情况,大家看啊,我们的这个U它是对广告来做操作的,那就意味着在同一天,你一个用户是可能对A广告点击数量超过30,也可能对B广告超过30,有没有可能?同学们,有可能吧,那么有可能的话,可是你这张表它其实就是U的ID,那么也就意味着你可能会多次插入UID有没有可能,有可能对不对?所以啊,那有可能的情况下,你这么写就有问题了,你第一回插入是对的,但是如果你现在要是第二回插入的话,因为它是unq,它就有唯一性,所以在这种情况下就会出现问题。那该怎么办呢?所以啊,我们课件当中啊,其实有这样的一个操作,同学们看啊,咱们来咱们找一下,咱们这边有一个这样的处理过程,咱们看看大家有没有接触过啊,有个circle文,这个circle文当中咱们往下来有一个叫insert into,然后呢,有个叫on duplicate key,就是当我插入数据时候,如果发现有重复的怎么办?诶,我来更新有个叫update,所以啊,它有这么一个功能,这个功能就比较强大了,为什么呢?因为当我们去进行插入的时候,是难免它可能会出现一个重复的这个key的问题,所以怎么办呀,同学们,哎,所以同学们看啊,我们在这里给它稍微的改善一下,咱们这里呢,给它这么写啊,把咱们这一块拿过来,咱们叫insert OK,放过来啊,好了,我放到这里啊,咱们放到这里。
06:31
呃,这个地方啊,放到这就行了,把这个去掉,然后呢,我们这里是insert啊,咱们是inst inTo Blackist user ID,然后写上一个on在什么什么时候在我们重复key的时候,诶拿过来在我们这个位置,然后我们干嘛呢?有个叫update,这个update呢,我放这里,那么你要更新什么呀?那更新不就是把U的ID更新一下吗?那么由于相同的K就是U的ID相同,那所以还说啥呢?那就直接来它,我们写上等于我们的问号不就完事了嘛,对不对,所以啊,就是这个意思,那这个问号和这个问号其实都是UR的那个信息,所以呢,我们写上一个二这个就可以了啊,所以呢,我们在这个地方就是把它拉入到黑名单,那么下一回你再去做判断的话,黑名单的数据就会多一条,诶就是这个意思啊,好了,这个呢,我们就算是写完了,好接下来我们再往下,下面呢是如果没有超过阈值,那么将当天的广告点击数。
07:32
这样进行更新,我们说了啊,你需要判断一下,判断什么呢?我们这个数据到底有还是没有,所以把咱们这个地方,咱们原封不动拷贝,拷贝以后我放过来,然后呢,把咱们的这个呢,咱们拿过来啊,拷贝以后写个括号,然后呢写上一个我们的蛇口文呢,咱们叫select,呃,Select我们的数据,那么咱们的数据呢,就是看我们的这个数据到底有还是没有了,所以拷贝。所以写个星啊,咱们写上一个星,然后呢,From啊嗯,咱们写上from,然后拿过来,然后条件,条件是什么呢?就看看我当前的那个时间啊,咱们的时间叫做DT啊,U的ID和那个广告ID对吧?DT然后呢,我们它等于问号,And u的ID等于问号,ADD它等于问号,然后放过来啊这个别写错了,咱们放到这边。
08:25
然后呢,我我这个给它折个行吧,太长了,可能看着不是很舒服啊,给它来放到这边。好了,那么这里呢,是我们d tu u的ID,我确认一下啊,咱们dt u的ID和a didd这是我们的差,好了,那我们现在呢就往里面传值了,不过呢,我们这里要稍微的注意一下,就是我们最后呢是要给它关闭的啊,那这里呢,我们写上它点,嗯,点了以后呢,我们这边呢给它传值叫set,咱们的string啊,That string,然后呢,给它一个一,咱们就叫day啊,OK,然后再来啊,再来这个地方我们写上二,好,这边我们写上三,嗯,这个呢我们叫做UR,这个呢我们叫做ADOK,那我们现在呢就可以去查询了。
09:11
所以我们这里来写上它,点我们的execute query,那这个时候呢,会得到一个我们的re set叫查询结果及叫RS等于它,那这个RS呢,我们要稍微注意一下,就是它,记住啊,是主键查询,组键查询,就两种情况,没有别的,所以呢,我们写上叫if,咱们叫R s.next如果它的next有值,那就说明我查到了,那么你查到的话就说明你要更新呢,所以把这个呢,我放到前面去啊,咱们放到我们的前面的这个位置啊,放到这儿吧,嗯,好,然后呢,我们这个地方就拿过来了,咱们拷贝。拷贝以后就放到这里,然后呢,写上一个else,那else的话,把这个呢给它拿过来好了,这个呢,我们就说到这里了啊啊接下来啊,大家看一下,那我们现在呢,在后面呢,就给它关掉了,点我们的close,还有我们的这个点我们的close,把这个该关的都关掉,点我们的close好,那我写完以后,我们说过了,你现在就判断呢,我们当前的这个信息有还是没有,那如果不存在的情况下怎么办?诶给他做一个我们的新增,所以你不存在,那就是新增呗,那所以我们再来啊,咱们在这里我要准备呢,写上一个connect,嗯,Connect咱们点咱们叫prepare statement。
10:34
然后在这里呢,哎,写上S课文,咱们叫insert into,然后把这个表呢,给他拿过来就是它。好,拷贝,拷贝以后呢,然后呢写个括号,然后再写上一个values啊这就可以了,嗯,好,那这里呢,我们来看一看,首先DT啊叫U的,还有一个我们叫做a did,那还有一个我们再来看,它叫做count,对吧?哎,咱们叫做count,那好了,它叫做countt之后,那接下来我们这边应该有12344个问号吧,所以一二然后三,然后四,这样的话,我们四个问号不就OK了吗?这里给它写上,咱们叫做它一,之所以叫做这个呢,是因为咱们上面有一个值,别冲突了啊,所以我们在这里呢,给它来咱们这里呢,把它拷贝啊,咱们点close掉,嗯,行,那接下来我们往里面传参数啊,那传参数的话,这里呢,我们写上啊,点咱们叫site,呃,Set string吧,嗯,然后给他来一个咱们的一,然后呢,叫做D,然后后面呢,就我们就写上咱们叫做U,那这个呢叫做ad。
11:41
好,那我们这里呢,写上一个三,这边写上一个二啊啊,但是我们的count呀,这个count我确认一下咱们这个前面统计的结果是什么啊。这个呢,我确认一下它是个int类型啊,Int类型的话呢,咱们这也给它一个int吧,好不好来把这个去掉,咱们给它来一个int就可以了,这边写成一个四,然后呢,写成一个count,诶是count吗?我确认一下,咱们这个是叫确认一下啊,这叫count啊,嗯,拿过来。
12:11
好了,然后呢,你执行不就完成了吗?所以点啊,咱们这里呢,给它来执行,咱们叫excute update OK,那我现在呢,就把这个数据呢,给它来执行了,这是我们的操作啊行,那接下来呢,我们就剩下最后一个了,因为我们现在的这个地方,大家可以看到我们已经能够判断出来,咱们现在呢数据是存在的,那我要更新数据了,对不对,那你更新数据其实就是把那个count更新呢,那所以我们再来啊,咱们写上叫做它。来写上一个一等于连接点,我们叫prepare statement,好,然后呢给它放过来,放过来以后呢,我们叫update,然后呢,把那个表明拿过来拷贝,拷贝过来以后呢,我们叫site,那么就是那个count啊,咱们的它应该等于咱们的count,再加上一个问号啊,你要把你的值传进去,对吧?然后条件是什么?那条件其实就是我们的那个它呀。
13:09
所以拷贝啊来拷贝,那拷贝以后,那我们就往里面传值呗,不过在传值之前先把它给它close掉啊来第二我们的close好了,那么这里呢就可以传值了,它这个传值来我们写上叫做点,咱们叫做set string啊set string1,然后呢,给它一个我们A不对。第一个应该是一个int是吧,咱们叫count,然后呢,这边我们改成叫set string,然后呢给它一个二,然后呢,写上一个咱们叫做D啊好,再来再来。OK,那这个呢,写上一个三,他写上一个四,那这个呢,就是我们的UR了,那这个呢,就是我的广告了,对吗?诶就是把这个给它执行一下啊,我们这里呢,其实大量的都是一些买的circle语句操作,包括JDBC的操作点一下我们这边给它update更新一下啊更新一下。
14:04
好了,那接下来我们再来往下看,看什么呢?我们前面说过了,你现在啊,就判断更新后,诶那你要更新嘛,所以把这个呢拿过来,诶拿过来把它去掉,诶好去掉以后我们接着呢,往下来,咱们要判断更新后的点击数据是否超过阈值,如果超过那么将用户拉入到黑名单。所以啊,咱们这里右的来了,咱们写上它,咱们叫做。嗯,写上一个二吧,等于连接啊,咱们的连接点我们的prepare啊,来prepare statement,然后写上一个它咱们叫select星,然后呢,From。嗯,From就是我们这个统计表啊,统计表,那这个统计表呢,就是我们的这张表拷贝拷贝以后,然后条件是什么?条件其实就是我们的这个数据啊,但是我们还得加一个条件,因为我们想判断的就是你的count它有没有大于等于咱们的阈值,如果你大于阈值了。
15:09
那么啥也不说,那么你这个时候应该怎么办?所以我们的R点,我们叫execute,咱们叫query,这边会有一个咱们的RS啊二等于它,然后写上RS2.close,对吧?来给它close,然后呢,这个地方点我们的close给它关掉啊好了,那我现在写完之后,那我现在就得判断一下,你到底这个数据有还是没有,因为它就只有两种情况,要么有,要么没有,那么如果有的情况下,那就说明我的数据有问题,我要拉入到黑名单当中,所以RS2点我们的next,如果它存在的数据干嘛呀,拉入到黑名单,拉入到黑名单咱们之前做过呀,不就是这个操作嘛,所以就把这个咱们原封不动拷贝啊,原封不动拷贝拷贝过来以后放到这个地方,我写上一个三啊,咱们写上一个三。
16:04
嗯,好了,放过来,然后给它close掉,好同学们看这个我们现在就给大家做完了啊,其实你会发现其实我们的思路还是比较清晰的,但是里面会有大量的JDBC操作,对不对,哎,就是这样,这个咱们一会儿说啊同学咱们一会儿再说,好,那我现在呢,就把它先停一下,我们一会儿呢来测试一下同学们。
我来说两句