00:00
分析一下咱们这个数据啊,它是什么样子的,那所以呢,我后退啊,咱们打开,打开之后把咱们这个数据分析啊,咱们反向的呢,去什么呢?哎,考虑一下什么意思,咱们先考虑买circle的数据是什么样子的,再一步一步倒推reduce应该是什么样子的,再来倒推到map应该什么样子的,那这样的话来分析出我们的数据的这种方式啊,首先咱们来先来说,呃,我这里插入一下,那我插入的时候,比方说这个时候呢,是买circle,那买circle的数据咱们其实已经分析过了,咱们数据里应该是什么样子的。什么样子的,是不是首先应该是我们的,比方说组件一对吧,组件一,然后呢,是那个叫133吧,对不对,电话号码吧,后面呢,2018年的什么十月份对吧?举个例子,十月份啊,然后呢,再来什么东西啊,是不是我们的那个通话的次数啊,十次,然后呢,总共呢是一千一千秒,咱们以秒为单位啊,然后呢,我再来写个二,然后呢,我们再来啊好,那么现在是二零以八呢,什么诶1010,那么可能是五次或者是诶三次吧,然后呢,这个可能是什么100,好,再来第三个,那么我们这边是他,然后呢,写上2018,然后这边呢可能写个30次,然后这边呢可能写个5000之类的。好了,买so的数据应该是这个样子的,那你的这个数据是不是来自于我们的这个聚合的结果呀,那所以说同学们想来我们后推啊,把这个拿过来,用一个颜色咱们写上,咱们叫做reduce。
01:38
那既然你要形成一个这样的结果的话,那我们的reduce应该是什么样的数据给它聚合呀,那也就意味着我们的数据最起码它应该是什么样子的啊,或者我们这么来啊,来把这个呢,我们放放到下面来啊,给它放到下面来,我们叫reduce,那就意味着在我们这里的数据应该就是一条一条的,什么意思呢?拿过来比方说我这个应该就是133吧,对不对,然后呢,我应该有一个什么东西啊,2018对不对,有个时间吧,有个时间然后好。
02:11
你就个时间,你有个时间以后,你应该有个统计的结果吧,也就意味着这两个其实不是统计的结果对吗?他俩不是统计结果,我就可以把它当成一个什么,当成一个K,那你不当成统计结果的话,那什么是统计结果,你这两个都是我的统计结果吧,那就意味着我这一条数据,我又能够得到你的通话时长,又能够得到你当前的通话的什么次数吧,所以说我这里应该什么呢?比方说十和什么1000,我这么行,行不行,可以吧,对不对,你前面是K,后面这俩都是我的统计结果,对吗?那所以也就意味着什么啊,你下面这个地方同学看啊,来,再往下走。拿过来,那也就意味着你的统计结果应该就形成了一个这个样子,那这个应该是什么?是你没有了对不对,那没有的话,这应该是什么?30吧,诶30这个应该是5000吧,诶应该就是这个样子,好,那你这个地方就是不是1010啊,啊1010的话,这个应该是我的三了,对吗?诶我的三,那这个呢,就应该是100了,诶就这样子,我的reduce如果产生一个这样的结果的话,那我就想办法给它插入到我们的什么,诶我们的买SL里面就行了,那如果你想要让reduce形成一个这样的数据,那你的map应该是什么样子呢?
03:30
同学们想想就是你如果想要我们的数据形成一个这样的结果的话。那我这里应该应该就是一个map了吧,对不对,那我怎么把数据给他弄过来呀?啊,那这个时候同学们看啊,我这里呢,给他一个我们的箭头啊,这个箭头呢,我就往这边放诶就可以了啊这里呢,用一个我们的这个颜色啊什么玩意儿,哎,挺好看的是吧?嗯,可以好了,那我这么做完以后大家想想,那我这边首先咱们别的不说,那个K1定要相同吧,对不对,因为那个K是原封不动过来的嘛,所以我这边应该K肯定是一样的,所以让我多写这个K保持不变,那这个应该是什么样子的。
04:11
是不是应该是通话一次过来一个呀,对不对,OK,那通话一次啊来那通话一次以后干嘛呀,还有什么东西啊,还应该比方说十吧,对不对,打了一次电话可能是十,对吗?然后还得有,还得有,那是不是应该这可能是50吧,对不对,这个可能是什么100之类的吧,诶应该是这个样子啊好,那行,那只是我们当前的月份,那好就问问你当前的月份有了我当前的年是不是也可能会统计出来啊,所以我写上是不是一八呀,就是我这一一条数据能不能体现出我们的年也能吧,什么意思,同学们看。是不是一样的,这应该是写50,这应该写多少180,为什么你2018年的十月份打的电话,难道不算这一年当中的吗?也算对不对?所以说我一条数据的话,那么这边年和月是不是应该都有数据啊?那其实天是不是也有啊,你在10月10号打的这次电话,难道不是2018年十月份的电话吗?难道不是2018年整年的电话吗?这不都是呀,所以也就意味着我这几条数据其实对于我们的什么日期是不是也是有效的?
05:25
是不是一样的什么意思啊,就是我这边是不是应该是这样。大家看啊,我这里呢,我这有点画多了啊,咱们画多了啊,给它删一个,别别删了,咱们直接改啊,给大家把这个效果呢,咱们给它模拟一下啊,来看看效果啊,把这个呢往下挪,诶把这个呢往下挪,所以你会发现我打一条带上啊来我写上把这个拿过来,这是我们在2018年的10月10号,我打了两次电话,第一次我们打了十秒中,第二次我打了50秒,那我刚才说过了,你10月10号的其实也在十月份当中的统计到结果当中,那我这是应该写个什么东西啊。
06:02
这个十行不行,可以吧,这月份吧,那同样2018年是不是也是一样的,那这个地方应该是什么呢?应该是十对吧,这应该是50吧,然后呢,这个地方是不是应该是十,这个下面应该是什么呢?50吧,哎就这样的,是不是这样的,那这样的话,你两个聚合以后,大家看你在做聚合的时候,由于我们的K是相同的,那么相同的结果是不是他们就跑这儿来了,是不是这样的呀?那你这个是不是我们的年就跑到2018了,那同样道理,你的2018年的十月份,这不就跑这儿来了,就聚合成这个样子吧,诶就塌了,那同样道理,你的那个日期是不是他就跑这边来了,诶所以就是这样,这就是我们的分解和它的什么聚合,你把数据拆分成一条一条一条的,然后呢,到了我们这边就给它聚合成什么呢?相应的数据就行了,聚合之后你再给它生成到MYSQL里面就完事了啊,所以我们只要在麦克里面能够形成这样的数据就OK了啊,但是呢,还不光是这样的。
07:02
那数据为什么呢?因为你当前只是主教吧,你还应该有被教对吗?被教是不是也打电话也通话了,他也通话了,那也算通话时长啊,那所以我们主教要有被叫还要有啊,所以那么我的map我就要想办法得到这样的数据啊,所以关掉,关掉以后找到我们的map,这个map呢,我们要重写它的方法,这个方法呢,应该叫做map,诶map方法,然后呢,把这个呢,我们就不要了,按照我刚才的说明呢,咱们是这样的,干嘛呢?你把那个上下文对象我拿过来,我们点我们叫做right right以后我写上一个叫new text,然后呢,再来一个new text,诶就是这样,然后呢,我多写几个,我为什么要多写几个呢?来,我写上这个叫主教用户。主叫用户,但是我这为什么写三个呢?因为年他算一个啊,年算一个,然后呢,我们的月啊,咱们就算一个,还有我们的什么日算一个啊,就这样,就跟我刚才说的一样,我打了一次电话,那么我这一天我要统计一下,我们的这一月,它也包含在内,我的一年也包含在内,就会生成三条这样的数据啊,三条,那么你光有这三条还不行,还有什么东西啊,还得有我们被叫用户,因为被叫用户他也通话了呀,所以我们还要写上什么东西啊,叫被叫,所以我们写上啊,咱们叫被叫用户,诶拿过来,把这个放过来就行了啊好了,我们这么写完以后,那么我们刚才分析过了,我们的什么电话号码和这个时间,它不是我的统计结果。
08:44
它不是同一结果的话,它就可以作为那个K,那也就意味着我们在上面这个地方就可以干嘛呀,是不是拿到我们的电话号码呀,号一,然后呢,我们写上叫CALL2,哎,等于它,然后再来一个我们叫call time,哎,等于它,那么也就意味着我们的这个CALL1,我们叫主教嘛,那所以这边应该怎么写,我们加上一个下划线,再加上一个我们的call time,来把这个call time啊来call time给它加上,我这么写完以后,同学想想啊,那是不是我们这个的组件就有了啊,哎,组件就有了,但我这儿就不能这么写了,这应该写个CALL2,表示的是被交,那所以呢,我这里呢,把它拿过来,嗯,好,所以啊,把这个扣二拿过来,那行,那这个咱们有了之后,同学们想想,那我现在要把数据传给这边的话,我们现在把一传过去,还是把这个十传过去,50传过去。
09:40
这个一其实你是不用传的吧,因为你打一次电话,我那边能得到一个记录吧,他能放到一个组里面对不对,所以啊,次数你是不需要传过去的,你来几条就有多少次,所以我这个一不用传,传什么就行,传这个十和50就行,这个十和50恰恰是什么东西,恰恰是那个duration吧,哎,就是他,所以我就把这个duration呢,我就放进去就行了啊,所以我的主教被教呢,哎,我们只要这么加就行了啊,年月日,诶给它加上啊好了,那我这么写完以后呢,重点是不是就在于这三这几个值了,这几个值如果你知道的话,不就好办了吗?那这几个值在哪呢?诶,我们会发现我们的map当中有一个K和一个value,你还记得吗?我们讲X base的时候,我们说了这个key其实就是那个组件对吗?所以我们写上叫做来我们写上啊,咱们叫做柔,这个就是那个。
10:41
D点什么呢?点我们的get吧,但这个get我看不懂啊,所以呢,我们bit,我们点to string,诶把它看懂了,嗯,好拿过来,拿过来以后那个rookie咱们看懂了,那rookie是啥呀。U key是不是我们的这个数据啊,诶,所以拿过来我们复制,复制以后是不是放过来啊,但是后面还有东西吧,后面还有这个00541之类的啊,咱们直接写吧,咱们叫005410054_一,哎,有这个东西,那么这个一我们就啊不重要了,为什么?因为我们只查一对吗?还记得吗?咱们在扫描的时候是不是只查了一个列,这个不可能有零。
11:24
它不可能有零对吧,它全是一,那全是一的话,我这都跟它没关系,那所以呢,我们开始要拆分了,所以啊,我写上叫string,我们叫做value values等于rock key rock key我们点我们的split,然后呢,我们写上下划线,这边写完以后,那好扣一是谁呀,那不就是第一个嘛,那所以这个呢,我们就来了啊来咱们写上叫values,我们的那个一对吧,诶,好,那么靠二,其实就是那个三嘛,嗯,好,中间呢,就是那个时间对吗?我们写个二,然后这个呢,Duration就是我们的那个四,诶就行了,所以这几个值是我们需要的那个零和那个五啊,我们暂时就不需要了,好了,那你这么写完了以后有个问题啊,你这个call time是一模一样的,也不对吧,因为我们是要年月和那个日,对吧?那所以我们这么写是不对的,应该写个叫year对吧,然后呢,我们再来一个写上一个叫做month,哎,等于它。
12:25
再来一个我们叫做date啊,等于它就行了,那所以我这边应该是,那这个应该是year,那这个是我们的month,这个应该是我们的month,然后这个是我们的day啊,然后呢,把这个加上好了,那这个年月日我该怎么取啊,那其实不就是从里面截就完了吗?你前四位不就是我的年嘛,那所以我的call,我的call.ream不就零到四不就出来了吗?对不对,那我的月份呢?我的月份是不是零到六啊对不对,那你包含那个年呢?哎,所以写个六,那同样道理,我这得写上什么东西啊,零到八对吗?反正中间没分隔符嘛,没分隔符的话,诶直接拿过来就行了,那这样的话我的数据就有了啊,我就把我的年月日都给他准备好了,我的数据就会按照这种方式给他什么组合好,组合好以后它我们就知道了。
13:23
啊,这样的数据我们就已经生成好了,那么生成好了以后,那么我们就开始要到哪去了,到我们的reducer里面了吧,那reducer里面我们是不是开始要聚合数据了,那所以呢,我们来重写它的方法,它的方法叫reduce方法,这个方法的目的很简单,我们是需要把咱们的统计结果传给我们的output format的,那所以我这里呢,就得写上上下文,我们点我们叫做什么right,这个K我们可以不变,对吗?为什么?因为我们这儿只是把结果统计出来,跟它没关系对吗?跟这个key没关系,我这个K就不用变,那你不用变的话,我的K可以直接传吧,那接下来是不是应该有一个统计的结果呀,这个结果记住它有两个值,一个叫sum,我们的那个叫做空,还有一个叫int,我们叫sum的duration,它应该等于零,那这两个值我要一块往那边传,我就不如给它。
14:23
合在一块儿,所以呢,我就直接在这儿啊,我们加上,然后下划线啊,然后再加上一个我们的sum,我们的duration,诶这样的话呢,把它拼接成一个字符串传过去也是可以的啊,我们说了我们简单怎么来啊,好,那现在问题就在于怎么统计它了,那么统计的时候就太简单了,为什么呢?因为这边有个迭代器呀,它有一个迭代器的话,那么我们就可以直接干嘛呀,可以直接来了吧,咱们叫做点,咱们叫做什么呢?负循环吧,哎,咱们负循环,负循环以后每一个Y,这个Y是什么值?这个歪是不是从我麦传过来的那个value,那就意味着我的麦传的这个value不就吗?恰恰就是我的每一个duration吧,那所以我们在这里呢,就可以得到一个我们的duration啊,它就等于我们的什么点,我们叫in,把那个value点我们的to string,诶你这么写的话,我们的那个时长我就知道了,你要统计了吧,你要统计怎么统计,是不是它等于它再加上duration就行了,哎,你这样写的话,我们有多少条数据我都可以给它统计出来,这不挺好吗?那你这个统计出来,但你还差一个扣,这个扣就意味着是不是只要你来一条就是增加一次,来一条增加一次呀,啊,所以这边应该是我们的。
15:52
加加对吗?你加加以后,记住我们说了,你打一次电话,我这边多一条,打一次我多一条,那这样的话,次数咱们也就统计好了,那么这个Du我们也统计好了,最后封装成这个样子就OK了啊,所以我们的reducer也算是完成了,并不复杂啊,那么我们的ma有了,Reducer有了,是不是就剩下我的output form mark了,所以就走到了这个位置,走到了这个位置以后啊,咱们首先啊,咱们看啊,就这个地方有一个叫做什么呢?叫get record,记住我们的output form恰恰就是这个对象,叫record,它来把数据输出到MYS当中啊,有一个我的输出的对象,那么这两个是什么东西啊,这两啥东西我不知道啊,咱不知道,所以啊,这两个我不明白,这个东西啊,它有个Y的,这个Y呢,不需要返回值,那我现在不知道怎么做,我就什么都不做啊,所以我这个。
16:52
空的,但你这个可就不能空的了,这个是个return now,那就有可能会出现什么东西啊,空指针异常,所以啊,这个你还真不能说return now,那这个在干嘛呢?Output commit什么意思啊,说简单点,他是要提交我们的ma的一些任务给谁啊哈杜吧,所以啊,他跟这个他有关系,那所以在这种情况下,咱们可能又不需要,但是你还不能为空怎么办?诶,咱们就模仿一下造毛画虎嘛,别人怎么做的咱们就怎么做,那么我们以前一定应该是学过这个东西的,叫text,我们叫output form,嗯,咱们叫做text output form应该就是它了,嗯,所以它里面就应该有这个啊,它里面有一个什么东西,咱们同学看,最起码有这个东西吧,叫get record吧,还有这个东西啊,然后呢,我们往下看一看,你会发现它里面有什么东西,它里面有一个叫做protected,是一个静态的内部类,对吧。
17:52
这个咱们暂时先不看,为什么呢?因为我暂时用不上,我现在需要的是这个方法,那这个方法我找一下,我找一下咱们搜索啊来好像是没有啊,但是他一定会有,对吗?为什么?因为这个我们说了,他要实现我们的那个什么,我们的操作的话,是不是一定要有这个方法,他没有,但它的负类就一定有,所以点点完以后来吧,我们去看一看,确实有啊,那有的话往下找一找啊来。
18:21
它这个地方呀,咱们往下看啊,就看这吧,嗯,呃,它的这个地方,哎,看看啊。嗯,它的这个地方get是我找错了吗?看看啊,这个地方可能啊,我点一下,哎,可能我找他不对,看看我这个找的对吗?啊哎,我找看看。哦,不对,这个包不对啊,这是旧的那个包找错了,嗯,这个呢,应该我们看一看这个是不是也不对啊,啊,这个找错了,应该不是它,嗯,所以啊,我们再来重新找一下,重新找以后就叫这个名字,但是我这个包不对啊,看看啊是不是这个呢。看看啊,这个包是不是他呀,看看啊看看啊。
19:03
Leave啊,然后呢,这个是不是,这是不是可以啊,可以以后呢,是不是也是啊,就是包不一样,是新和旧的一个区别啊好,我再来看它点一下,点完以后我再回过头来把这个方法名我再来去什么找一下,嗯嗯,我点一下是那个file,诶我们来搜索,搜索以后来我们往下走。哎,大家看在这就这个东西,这个里面是不是就有相应的实现功能啊,那么这里你会发现一个什么东西啊叫new啊,那么其实就是跟我们的哈杜相关的,那但是我们这个呢,又不需要,所以他这里面有个pass,是告诉你提交的那个路径在哪里,我们说了这个咱不关心,所以既然不关心的话,他怎么写的咱们就怎么做,所以啊,咱们就原封不动拷贝过来啊,造毛画虎嘛,所以来他怎么写的咱们就怎么写,但你写完就会报错,因为这个东西你并不存在,你不存在没关系啊,那我看他怎么做的呢?他这个commitmer在我们的这个位置对吗?诶在这里呢,我就拷背啊,拷背以后呢,放到这儿来。
20:09
好了,但是这个方法呢,我们这有没有啊,所以咱们再来,嗯,诶好了啊,你看看啥都有啊,嗯,好拷贝啊来,那我现在这个地方是吧,你根本就不用自己写啊,就是原封不动拿过来就行了,为什么呢?咱们用不上,用不上的话就只要他能通过就完事儿了啊那行了,这个呢,我们就不重要了,那重要的就是我们这个对象该怎么去处理了,那咱们刚才看见了,它这边是有一个什么啊,是不是有一个我们的内部类啊,那他有呢,咱们也可以有啊,所以他能有呢,咱们也可以有啊,所以原封不动拿过来,拿过来以后呢,我就放到这个地方,它有静态内部类,咱们也有啊,好了,但是我得改点东西啊,啊,咱就不能叫这个名字啊,咱们叫改成叫买circle,咱们叫my circle啊,好了,那你叫买蛇口以后,这个key和这个V,就是我们上面的T和V啊,所以这个。
21:09
放过来,把这个呢,给它放过来啊好放过来诶诶。我今天搞错了是吗?不一样吗?那他们怎么还会自动生这玩意儿呢?看看啊,报错吗?诶,没报错啊啊好啊,没报错的话,那我在这里面呢,去重写它的方法,这个方法呢,哎,咱们来啊,咱们这里来,我们有两个方法点击它。哎,这啥东西。看啊,这个时候不需要啊,这个好像不需要啊,因为这只要写完以后,这个不需要的啊好了,那我现在呢,咱们这个地方呢,已经准备好了,别的地方你不用管,就剩下我们两个方法该如何实现了,那这个方法就太简单了,那这个方法是啥意思呢?这个方法呢叫输出数据。
22:12
然后呢,这个叫close啥意思呀,叫释放资源啊,咱们叫释放资源啊,来释放我们的资源啊,好了,那你现在这个东西已经有了之后啊,那这个我们的writer咱们就可以拿过来了,拿过来以后这就别是now了,咱们叫做new,我们的什么?诶my circle record啊,就把这个对象给它返回,这就行了,你返回以后,那我要重写这两个方法,一个是用来输出数据的,一个是用来释放资源的,那你连资源都没有,你释放什么呀?所以我在上面还得加点东西啊,加一个public,我加一个构造方法啊,我要加一构造方,为什么呢,我要获取资源呢?写上我要获取资源,为什么要获取资源呢?因为你要跟买circle扣连接的话,要跟超了买circle,你是不是得拿到那个connection啊,是不是啊,所以啊,我们这里还要去准备一下来,我写上叫pro,我们叫connection,这个就是我们的java.circle了,咱们来放到这儿啊,它等于那好了,那你就需要在这个里面把这个connection得到,那你释放资源的时候,那我这里不就应该判断一下了吗?叫if。
23:25
如果我的connection,它如果不等于,那哎我就要给它关掉它,嗯,所以点我们的close,哎这不就释放资源了吗?啊,然后呢,把这个呢给它来circle exception,那我这里呢给它包装一下,嗯,好了啊,行,那我这么写完了以后,那我现在得先获取它呀,获取这个Java的那个什么JBBC我该怎么做,那是不是我又该封装一些功能了,哎,所以common,那common里面这个就跟以前你们学的什么啊,我们的JDBC就有关系了,所以new我们创建一个咱们这啊就别封装的太深了啊,所以我就直接写JDBC我们的U啊,然后呢点击OK,然后呢在这里我写上public static,咱们叫做connection,然后呢叫get来咱们这么写啊好,把这个呢给他来,我们叫connection是我的java.circle的,那我里面该怎么做,该怎。
24:26
怎么做呀,是不是来首先加上这个,咱们叫catch啊,把这个给它加上,然后呢,我们的exception,嗯,好,然后呢,我们这边啊,然后一点我们这边啊,行了,接下来在我们这边我的准备那个叫啊。这个connection他是不是应该有个什么东西啊,有一个叫做driver啊,还有印象吗?叫manager点叫那是传参数,传参数的话是不是什么连接串啊,用户名密码之类的,这个事先给你们准备好了啊,所以来咱们找一下,在咱们资料当中有一个叫做什么呢?数据框架有个叫MYSQL的文件,这个文件当中的connection这里就有以打开,打开以后原封不动拷贝过来啊拷原封不动拷贝过来就放到上面吧,放到它上面去,诶放过来,放过来以后记住啊,这是我当前自己的机器LINUX1306,这个就不对了,这个应该是180808,诶好,然后别的不用管,这是我的用户名,这是我的密码吧,啊就这样,你们要根据你们的实际情况要给他改一下。
25:43
那我的connection,那我这里呢,就应该加东西了,第一个是我们的连接串,第二个是用户名和密码吧,所以把这个URL传过去,然后还有一个是user nameme啊然后呢,再来我们的passord,嗯,好了,那这么写完以后,那我们下面呢,就可以得到连接对象,我直接return那个connection就行了啊在新版本当中啊,我们这里是不需要加载数据库的驱动的啊,它会自动去找,但是呢,我们说啊,旧版本还需要,所以啊,我们这里为了准确起见,还应该这么做,DR有个叫form name,这个form name把这个数据库的驱动给他什么呢?加载一下,嗯,好了,那我这么写完以后,我的connection是不是就有了,那有了之后,那我现在就可以干嘛了,在我们这里获取资源吧,那不就是它等于什么东西啊,他等于这DBC,我们U求点你把。
26:44
啊,获取了,获取了之后,这边给它关闭了,一个开启一个关闭中间来实现我们数据的保存不就完事了吗?所以我接下来要写上我们CDBC的操作了,那么我们这DBC的操作,同学们想想吧,我该怎么做?这时候又要涉及到你们以前学过的东西了,是不是connection,我们叫做什么,他是不是来啊,我们写错了,应该是点,应该有个叫statement,然后呢,这里应该怎么写啊,是不是应该准备个circle口文呢?叫ins色circle口吧,我是不要插入数据,那我的insert into,然后我要插入的是我的这张表吧,咱们叫CT下划线对吗?CT下划线靠,然后括号叫value,然后括号,那么我们这个括号里面第一个是我的字段对吗?这个字段逐渐不用管它自增长啊跳。
27:44
D啊,我就直接拷贝得了啊,直接拷贝我直接复制过来啊,哎呀,复制过来好像有点问题啊,嗯,看看啊,有问题有问题改呀,嗯。这个逗号啊,然后呢把这个呢来放过来啊嗯,然后呢放过来,再把这个呢给它放过来好了啊行,那我现在呢四个字段就有了,那我这怎么写啊,这是不是我就写上问号问号,然后呢问诶问号啊,然后呢这里是吧。
28:25
上面有四个字段,这里是不是写四个问号啊啊,然后呢,Insert我们的什么它吧,嗯,然后这里面会有异常发生吧,有异常给它捕捉一下啊,然后呢,我们写上一个他啊给他捕捉一下,嗯,好了,那这么写完以后,那我这边呢,就应该有个prepare statement了啊,所以呢,我在这边给它来啊,它等于这个,嗯嗯,它等于呢,好啊,然后呢,把这个呢,Prepare statement,嗯,行,放过来以后我放到这里等于它,嗯,好了,那我现在这么写完以后,我的prepare statement啊把这个呢给它放过来啊。
29:04
Prepared statement on。把这个呢给它拿过来啊,好了,那我现在写完了之后,我该怎么办了啊,是往里面要传参数了啊,对吧,那我这边应该是我们的site,我们这几个好像都是数字类型的呀,都数字类型是不是set这个东西啊,然后写个括号,然后呢写上一个一对不对,然后呢再来啊好,然后这边写上一个我们的二,然后呢写个三,然后写个四,表示第几个参数的意思,那么第一个参数是不是我的TID啊,这个ID我现在还没有从我们数据库里面取出来呢,所以这个我先随便写一个,我写个什么二啊,然后呢,这个date ID咱们也没从数据库取出来,我就给他随便写个,写个三啊,无所谓,随便写啊,然后这个三和四应该来自于哪里。他应该来自于我统计的结果,对吗?而我的计结果恰恰是哪里啊,恰恰是不是我们从reducer给它输出过来的这个值啊,那这个值不就是我的统计结果吗?这个结果当中不是用一个下划线给它分割开了吗?那所以我在当前场合下我就可以拿到它了,所以我写上啊,咱们叫做value,它等于A不是value啊,咱们叫VALUE400。
30:27
然后呢,我们这边写上它等于我们的value,给它来点to,使string.split然后有个下划线,你这么写完以后,那么我这里记住我们有一个叫做什么呢?叫sum,我们的嗯,叫扣,它就等于values,然后呢,给它个零,然后呢,再来一个就是那个一了,这个叫duration duration啊然后呢,这边给他来一个我们的一好了,那这么写完以后,那不就简单了吗?那我这里应该是我们的int.part in,诶把这给它加上,同样道理,我这里写上叫点啊,点我们part in,这个应该是sum的duration,诶把这个拿过来,拿过来以后咱们的四个问号的值咱们都有了,这两个是固定的,暂时先这么做啊,然后呢,这两个值是我的统计结果,那如果参数没问题的话,你可就要执行了,所以我们叫excute update啊,所以把这个给。
31:27
给他来执行,记住这步操作就是执行我的插入数据库的操作啊,咱们就这么说,那你做完了以后,那是不是就意味着我完成了,那我应该怎么办,是不是应该关闭我的资源啊,哎,关闭我的资源啊,所以把这个呢,给它来判断一下,叫if啊,咱们这边如果它不等于那的情况下,给它来close掉啊,我们这儿别关那个connection,因为connection后面还要用,那我们这个可以暂时关掉它,这个没问题啊,所以我这里呢,来啊,给它来包装一下,嗯,好了,现在呢,我们这个程序也就写完了,其实就是我们的纯粹的JDBC,而这个k value6恰恰就跟之前是一样的,把这个数据就拿到手了啊好了,那现在我们这个写完以后,那我这边的程序就已经大概呢,都已经完成了代码的开发了,那我该怎么办了?是不是应该把它打成包以后放到我们的什么服务器当中去运行啊,啊,就这意思,但是你还不能够。
32:27
直接运行,为什么呢?因为你现在要连接买SQL数据库,可是买circleq的驱动成序架包我们还都会有吗?没有吧,对不对,他没有,为什么呢?它的大数据框架怎么可能有买SQ的加包呢?没有,那没有的话,可是你运行的时候又需要你该怎么办?你是不是应该把那个驱动程序的架包放到好多当中去啊,诶所以在这种情况下,同学们看我在这个位置呀,诶在你本地的没问仓库里面应该是有这个买S的东西的啊,所以把这个拿过来,如果你们确实没有的话,一会儿呢,给你们班长拷贝一下是吧?嗯,所以呢,我就放到这个里面啊,买车过的文件吧,啊,放这里面啊,到时候拷给你们啊,然后呢,我把这个呢给它拖一下啊,拖到哪去呢?告诉大家拖到这个位置。
33:17
这什么东西啊,看一下哈杜op里面有个叫做cell共享,共享当中有一个叫哈杜op,有个叫common,这个common里面会有这样的一些架包,我为什么要把买circle的那个架包放到这里呢?是因为哈杜里面的这个文件一是一定会用上的,那就意味着你把MYSQ放到这里面,他是一一定能够找到的,之前有的班里的同学就出现个问题,什么问题呢?他把那个我们的数据呢,放到那个哈杜的这个位置没找到,就是把它放到这个叫里面,按理说这个Li是不是内库的意思啊,但你会发现里面啥也没有啊,所以啊,放到这儿呢,还没找到,那既然是没找到,咱就不管它了,所以sell我们的哈杜里面有个叫common,诶,这个里面是肯定有的,那所以呢,就把刚才的价包呢,给他什么拖过来啊,拖过来,你拖过来以后呢,然后呢,给他来啊分发一下,嗯。
34:14
所以啊,我们这里我们写上啊来我们写上嗯,好了,然后呢,我们这里来啊,然后呢,给他分发一下。好,然后呢,把那个买circle给他来啊,给他分发完,分发完成以后,那接下来你把我的这个呢,给它打一个包啊,所以把这个呢给它打一个包,这个打包就要可运行了,因为我们是Mac reduce了,所以打成它点一下,点完以后呢,我们压缩包点个加号,然后呢选一下啊来等着它。把这个呢,选择我们的那个叫诶数据分析,然后呢,选择我们这边分析数据就是它了啊,然后呢选择copy,然后呢,再来选择那个resource,好点击OK,点完OK以后点击应用,点击OK,那这时候呢,我们的配置已经配置完了,配置完了之后呢,在我这里呢,给他点build,然后build,然后选择它,然后呢点击我们的build啊稍微的等一会儿啊,最起码呢,我要看到我们这个数据呢,它已经打成一个包了,嗯。
35:18
不出错的话,这边就成功了,成功以后呢,在我们这个位置可以刷新一下,刷新以后呢,这边的它就在这儿了,然后打开,打开里面会有很多很多,没有关系,咱们就直接给它拖过来就行了,所以我这个地方呢,把这个去掉,我们写上一个叫date,诶好了,我就把刚才这个呢,原封不动给它拖过来。咱们之前不做过类似的操作嘛,这俩个都一样的,对不对啊,都一样啊,所以给它拖过来,拖过来以后呢,这个里面的价包就都比较全了,比较全了以后,那现在我该怎么办,是不是开始要执行了,哎,执行了首先你得保证你的雅是不是开着呢,是吧,然后呢,怎么办?然后呢,我别的先不管它了,这些我们的什么呀,这些咱都不管了,反正h base中是有数据的,有数据这个咱们都不要了啊,这个呢也不要了,嗯,好,不要了之后现在我们准备来操作一下,嗯,咱们写上它叫module,咱们的date,然后呢,我现在写上叫OBT,我们的mole啊do,然后写个什么B,是不是有个叫雅呢,然后怎么写,是不是写个价啊,价后面呢,后面是不是写我们现在date里面是不是CT的这个东西啊,对不对,看是他不是,我确认一下,咱们叫CT的下划线是吧,CT的下划线我们的他里面有个。
36:39
吧,对不对,是有这么个价吧,有他有他以后呢,我回车。回车以后呢,看一看我们的这个结果啊,如果要是正确执行的话,咱们S中的数据就应该能够放到我们的MYSQL当中,我们这里并没有做复杂的操作,就是一个简单的统计啊。
37:01
嗯,稍微的等一会儿咱们看一看啊。希望他别出错吧,啊,因为马上就要下课了是吧。他慢就说明还有成功的机会是吧,如果很快就执行完了,可能是出错了是吧。啊,已经走完一半了是吧?卖阶段走完了是吧?哎,好快,哎还没出错是吧,咱们看看啊,咱们这个地方大家看啊,我们这里是不是outp是不这条啊啊那么现在就有了吧,那有的话咱们一啊只要数据出来了就行了,还有一些功能没有做,咱们先后面再说啊来我们看这个表,这个表里面数据浏览一下,你看这不就是我的数据嘛,对不对,这里面就统计了我的通话时长,这边呢,就是我的通话的什么次数,哎,就有了,有的是多点五次,有的是六次的是吧,但是我前面这个是固定写时的,这个没关系,这个咱们后面再改,首先先保证我们的诶这辈和我们的MY之间能够通信,能够把数据传过来就OK了啊我们今天就先讲到这儿,大家休息吧。
我来说两句