00:00
还有一个函数啊,就给大家提一下吧,也比较简单,大家一看那个官方文档其实就比较清楚了,什么东西呢?还有一个group set,小丽叫group set,呃,为什么非得要又提这个函数呢?主要在于之前我记得是有一个大场,它问到了,当然我们今天课程当中没讲这个,是给这个什么呢?多维分析,用多维分析,呃,什么叫多维分析?那换句话说多有多维分析,那中间的维指的是什么意思?纬度对啊,维度没问题,也就是说我们看啊,经常我们求一个所谓的这个抗心。对吧?呃,我们可以直接select count新,FROM1张表,也就查询总人数,假如说EP这张表,对吧?好,我们是不是还可以select gender,就是性别逗号,然后看到新,然后from这张表emp这张表group back gender。
01:07
按照性别这个,从性别这个维度看一下,哎,公司当中男女分配情况,男的有多少人,女的有多少人,对吧,那我们是不是还能做这个事,就是所谓的哎,我去看一下select depd,逗号count,新from dp这张表,Go back depd,从部门的角度看一下,每个部门各有多少人。没问题吧,那我们能不能这样看呢?我既按照部门,又按照性别,就是说最后分组的时候,我查的时候啊,C select的第一批点ID,逗号gender,然后逗号count,新from EP这张表group back,加上什么EPI,就是depd,逗号占nder,按两个维度来看,就是我们看各个部门当中男女各有多少人,是不是这样一个需求。对吧,那我们刚才所说的这一套。
02:01
你要写几个色块呀。就是说总人数对吧?呃,按照性别分,按照部门分,既按照性别又按照部门分四个嘛,对吧,那如果有了group said,那这个就是所谓的多维C,因为我们可能还有维度怎么样啊。更多对吧,维度可能更多。啊,那么那个时候呢,我们就可以用group send,用一个circle来搞定这所有的事情啊,你要是之前要做那个事情,你是不是要把四个搜写好之后,然后把它UN在一起啊,或者说unor在一起吧,把它拼接成一张表,然后放在一起,对吧?有的字段没有,那你们可能在想,那我查的有的表查两个字段,有的表查三个字段,那那个我得补一个nu呗。对吧,Unit的时候是不是可以自己补字段啊,我去补一个那就好了,对吧,用这样的视频,因为unit大家要知道我们那人说了,它必须要你查出来两个表示字段完全怎么样一样,对吧?啊,所以你要补一下我补一个空值,或者哪怕我补一个零吗?等等的这些东西是不是都可以啊,是这样的情况,那group set呢,它就做这个事了,好,那我们来看一下啊,在官方文档当中,呃,大家看到官文档其实就明白了,因为刚才那个事情能明白,那这个group set它的用法应该也能明白。
03:18
哎哟,我还提前打开的,把你的网速现在。行了,那它是属于分组函数当中的啊,所以说呢,这个还是我们最早给大家提供的在第六章查询页面那个网址对吧,然后呢,我们点到group代理,然后这里边呢,就有这个,我们主要看它啊赛啊赛对吧,就是这行,那它的一个应用呢,在这个里边啊,我们看到这里面东西好,然后呢,我们看这个例子来你看第一个。到这你先不看。
04:01
呃,他说呢,我们要查AB some c from table,一知能表group by AB,那其实就是既按分组又按B分组,同时分组吧,就是我们刚才所说的,我既要看部门,又要看性别。对吧,啊,然后呢,这后面可以跟一个set。来限定组的范围,那如果说group set,你看它的一个写法啊,你一起看下面它group set后面呢,是不是一个括号,对吧?首先一个外层有个括号,然后接下来内层还有括号,有多个什么括号,当然可以写一个啊,那每一个呢,就是你要分组的内容,你看一下第一个它写后面啊,就是相当于这个语句。啊,相当于这个语句。因为我们指定的两个都要,那这个呢,看不出来什么区别,看不出它的作用,对吧,你看下面这个。
05:01
Group sets有个外层有个括号,然后呢,内层有个括号,逗号A,你看啊,它这里边是干什么?C like的新from group AB,然后还有一个A,把它干什么因那写来的。用起来了对吧,那你看啊,这个地方,这就是刚才我们所说的四种。对吧,那你看啊,首先。假如说这个是DEP didd,这个是gender最终形成的结果,我们是要看group set里边了,对吧?我们既要按ad,这个是不是看两个维度,两个维度都用上对吧?那这个是不是只有DEPTD这个维度就按照部门维度,这个是不是属于只爱性别维度,而括号空呢?就相当于是select count心from这张表什么都没有,不带。
06:02
是不是相当于这种内容,你看下面啊来。Group by ab2个对吧,第一个AB,第二个呢是按AA now,那B最后一个呢,两个直接补now,就是我们所说的我补个呢,因为你要用点在一起,你这个列的个数必须要怎么样了,要一样对吧,所以它自动补个呢,好,所以呢,我们就直接把这个东西干什么,我们就看一眼啊,主要看一下它来我们看一下这个CC。From EP这张表,呃,这里边我们可以按照哪两个维度去分析呢?这个不还真不好分析是吧,因为这里边儿我们是没有这个所谓的两个维度的。嗯,那这样吧,我们自己去造一些数据,好吧,自己去造一些数据,因为这里面没有啊,嗯,那我们自己造一些数据呢,到这来啊,动画分割也行吧,动画分割还好一点,没有那什么高地的事情了,那我们造还是造一个员工表。
07:04
对吧,Staff假如说叫staff表员工表,呃,那这张表里边第一个我们去造他这个ID啊,1001对吧?呃,第二个位置我们写他的一个,呃,姓名对吧,张三,第三个位置性别真的,那我们用没有对吧?啊没有会妙来表示啊啊那么接下来呢,还有最后一个。对吧,啊,部门ID假如说呢,我们叫十号部门或者20号30号就是这样的啊,用这样的数据,好,那我们再来一个1002逗号第四,嗯,假如说是那个飞秒。然后呢,他也是属于12部门的,嗯,1003啊,然后呢,是班长是吧,飞秒是吧,大家说的跟我没关系啊,班长你知道该找谁算账啊,二哥1004有班长那就必须有谁啊,有海王吗?啊啊。
08:14
没懂是吧?啊,刚才有同学说了有班长,那必须还有班花啊,那行,再来个班花是吧?班花是谁?班,那班长既然都是飞秒的,那班花必然是没的是吧?好,那30号啊,随随便再来一遍啊,随便再来一遍1006啊,嗯,我知道还有社会摇是吧,我听到了海王说的啊,20啊,或者说这个30万,这个20啊,行吧,那我们是不是说每个部门当中男女各有一个人啊?对吧,现在十号部门是不是男女都有一个人,20号部门也是一样的,哎,30号部门也一样的吧,我们就用这堆数据啊啊。
09:02
也不用搞那么多对吧,嗯,VM,一个star.tst,然后呢,写进来保存退出四个字带对吧,嗯,可的table好四个字段,第一个呢是叫ID对吧,ID,嗯,对,我都用string类型的啊,第二个是不是name,然后string类型,第三个是真的对吧,或者叫thanks都可以,对吧,真的这类型最后一个是不麦DDPTID对吧,嗯,DBD,然后呢,也是D类型,好如for,然后是对吧的,然后呢,我们是逗号是吧,好,这个好了,然后漏的贝。
10:02
In pass对吧,是OT Mo底下的data,然后呢是这个叫大点TST对吧?Into table,这个刚才是stuff这张表,新from stuff这张表,啊,行,那我们就用一个多维分析的一个方式来把我们想要的结果,就是说我既要查看总人数。又要查看男的,就全公司男的有多少人,女的有多少人,又要查看全公司各个部门有多少人,同时还要查看什么。各个部门男女各有多少人对吧?我们要看这么多东西,本来你要求的是不是要写四个思考,然后把它应定到一起吧,现在是不是有了group set之后一个速度搞定,对吧?那我们来写一下,先来,嗯,那。字段,我们是不是要按照那个gender和DPD啊,DEPTD逗号,然后是那个gender逗号,是不是count德新三个字段对吧?心from这个stuff,首先是不是先写上group back他们俩,然后注意要加一个group平。
11:18
三括号,我们要的东西比较多对吧,所以呢,我们明显要四个,我先把这个四个干什么,加一个括号括起来啊,当然如果说只有一个字段,这个括号格式上刚才我们是不是看到对吧?第一个我们是不是要按两个字段进行,就是他们俩吧,对吧?好,第二个呢,我们只要一个就按他呗。第三个是不是也只要一个真的对吧,最后一个是不是什么都不要总数,我就要求总数对吧?啊,就什么都不写走一下,哎,是。我是这个单词有问题吗?啊,这个没有那个这。
12:01
喜欢,记得这个下划线了啊,没有下划线,它没有下划线。那我这块写错了啊,这个我改一下没有下划线对吧,而且呢是这个啊,是他是做这个多分析的,然后我们看出来了一个结果就一个搜,就把这些东西呢给他搞定对吧。好,那两个闹这个说明是什么?全部总人数对不对?两个为闹吗?好,那真的为闹,说明是不是只按部门,各每个部门是不是两个人对吧?那还有这两个就是这dpd ID为档的,是单独按性别进行排的吧,就一分组的对吧?哎,各个性别是不是有三个人没问题吧?那还有最后这个所有子段都不为档的。
13:04
那是不是两个字段都用上了,对吧?那大家想一个问题啊,刚才我们把这个搜索写完之后呢,他跑了一个MR任务,那么问题来了,如果真的现在是这个数据放在这,这个数据放在这,让你用MR实现刚才的功能,应该怎么写就对吧,就是说我一个MR任务,把刚才我们所要的这四种需求一把都写出来。你想一想,这个东西应该怎么写,他搜都能实现,自己写MR是不是一定可以?怎么写啊,这个东西。就是想嘛,想,对于这个,因为我们求的是我的,对吧,Videos那边比较好写,Videos无非就来一条累加一条,来一条累加一条呗。
14:05
他不是这个需求,是不是还是在做郭德康的呀,对吧,只不过说需求有点特殊对吧?好,那往这一放,就是进来之后我们就想两个问题,这个map这边怎么写reducer reducer刚才我们都已经说过了,它这个写法对吧?它就是数据累加就好了啊,它就简单累加,那主要的累加的是什么数据,是不是看你ma里面给我传过来是什么数据啊,我就根据相同的K我做里加就好了呗,对吧?那这个东西怎么写啊,大家想一想,一个MR任务就搞定了,对吧。那这个就是效率比较高啊,那你之前如果说你写四个勾的,So,你是不是要跑四次。是不是应该跑四个MR任务啊,对吧,这也多维分析它的效率比较高,而且呢,最后形成了一张表,不用搞那么多表,对吧,这个地方ma怎么写,想一想。
15:05
读进来一行数据对吧,这是读进来的数据。40。看结果,看结果来,他最后呢,累加出来是这样的一个结果,那你想嘛,凭什么维最后能累加出来这个结果,那所谓的这个东西跟map没关系吧,这是map传给他的吗?那你可以传,传个一进去,他可以加一,我不传是不是也能做到这个事情。那我直接遍历迭代器来一个,我反正自己定一个count等于零对吧,我来一个就干什么,我加一个来一个加一个我不用我的count,我的map那边输出的时候六必须唯一吗。
16:00
不是的吧,你如果说唯一的时候,我直接加你这个值,如果你不唯一。我就计算你的size对不对,计算你迭代器的长度不就好了吗?啊都可以做啊,所以说这后面那个值跟map没有关系,但是你想想看,前面这一套是不是写在go后面的。写在勾后面的,现在大家应该能知道在MR里边是不是应该放在K的位置。对吧,所以说这条数据进来了,你想想你要写什么东西出去把这个问题讲起。你看啊,这条数据过来之后,他未来会对哪几条数据,就这里边会有影响啊。这一条会不会就这一条数据进来了,对总数有没有影响,肯定有啊对吧,总数肯定要加一啊,怎么没有呢?那任何一条数据对总数肯定有响呀,对吧?好,那接下来是不是对没相关的数据都有影响,对吧?那我们就挑是不是这下面这一套都有。
17:15
还有呢,是不是或者第一批did为十的也有影响?对吧,啊,当然呢,如果说应该是这条吧,对吧,如果他们俩共有的就没有影响了。哎,这个这个东西错了,勾错了,应该是对他们俩对吧,对它单独妙的单独什么。十的以及。他们俩的是不是对这四条数据有影响啊?其他的有影响吗?没有,也就是说我们写出这个数据呢,其实比较简单啊,那无非就是说数据进来之后,我们context在里边这点right。Red不是要一个K要一个Y6吗?对吧?啊K的话,假如说我们把它放在一起啊,正常的,它其实做一个拼接,对吧?啊,我们传什么K出去呢。
18:11
那那Y6呢,我假如说就放一个一啊好,这是对总数贡献的对不对,还有对什么,这个地方是不是还有一个十闹,还有一个呢,是闹没有,以及还有一个什么十秒,那你想就进来一条数据,我这样写出去四条,是不是一下子把所有任务全部完成一个M25,因为这个东西传到reduce那边之后,它是不是根据我K。分别做哪家呀?因为一个K调要用一次为定的方法吧,能想明白这个问题对吧?这个能理解吗?啊,他其实就这样做的,就进来一条数据之后呢,我写出去四条,把你所有想要的结果我都干什么写出去,刚才我们是不是分析了这条数据对总数有影响,对单独十号部门有影响,对单独的mail有影响,同时对十号部门以及ma有影响,是不是它会影响四条数据,所以在map里边我们写出去,刚好写出去什么四条,对吧,正好有对应关系的啊,那到reduce那边video的逻辑,它不管你K是怎么样子,我们只做什么。
19:35
Value的累加,然后把K跟最后累加好的值是不是写出去就好了,写出去最后不是形成这个样子吗?对吧,所以呢,大家平时在写S写完之后呢,多想一想这个,呃,所谓的这个MR应该怎么去实现啊,应该怎么去实现,对吧?是这样的东西,先能理解这个事吗。对吧,你要你要不信的话,你可以把这个文件干什么,你拿什么按照这种啊,你去干什么,你跑一把,当然了,注意啊,这个不要这样写啊。
20:07
你其括号这个不太靠谱吧,我们可以干什么,我拼接起来可以吧,啊拼接起来大不了最后在维那边输出的时候,我把它放放开,或者说把这两个东西放在一个对象里面。封装的一个对象啊,你不要写这个SKY里边可以这样写啊,因为Java里边你写不了那样东西啊,JAVA8里的系列也可以,JAVA8里这这个东西呢,叫元组,就这个东西啊。叫圆,呃,是招吧,里面都有的。啊叫table啊叫元组,后面呢,大家学那个SPA之前学的那个语言当中会有啊,但是现在呢,你不要这样写,你就把它封装成一个对象的,对吧?啊封装成一个对象啊,你可以自己去试一试这个东西。
我来说两句