00:00
好,那接下来我们来看一下这个。每个video内部还有一个sort,看这个名字也知道它是排序吧,但这个跟刚才就不一样了,这个是每个video的一个内进行一个排序。这个地方也就是说我们要设置维个数就会生效了。这个就很像我们之前写的MR,你设置多个video,然后在每个video内部进行排序的啊,进行排序了,那我们看一下啊,因为当前这种情况下,我不知道大家还记得得它的默认值是多少呀。负一,也就是说它不限定这个值,那这个值怎么来呢?根据数量来的。啊,看数据量来分渠道,现在呢,不想让它分区量,我要干什么,我就让它分三个区啊,我首先强制它分三个区。现在分三个区了,好,现在我要干什么事呢?我要用的来排序。
01:00
按照员工编号。来排序,但是这个东西啊,我会告诉你这个东西啊,你看出来,假如说按照员工编号,你直接打印出来,你看不懂。看不出来啊,效果看不出效果是这意思,我们看一下。因为他最终的数据呢,都打印在一块了,你根本看不出来分区,你真能看出来分区效果吗。看不出来吧,啊看不出来那怎么办呢?这样我们把它放到哪了。本地文件啊,放到本地文件系统里边,我们来看一下来。把它走一下,我们是放到了哪个文件。德啊,应该放在塔叫result啊的一个结果啊,放到这个里边,我们来看一下,等会呢,我们可以跟做一个对比啊,做一个对比。
02:09
好,然后呢,我们去看一下结果,那我们要CD出来,因为那个文档当中一一以前用的是电脑四啊进到这个中。哎,CD到这个S这个里边有个结果吧CD。跟我们之前所写的mmr任务是一样的,你分三个区,你最后呢有三个区的内容啊,在区内进行排序,这是我们说的呗,好,那有同学说了,你all的半是不是也有这种功能呢?来我们看一下,现在呢是这样情况,我现在是不是设置reduce个数为三个。没问题吧,好,我把那个。好。放在这个地方,嗯,然后哎,我把它调成那个circle,因为这个都是TST,没有没有那个颜色调成这样能看到关键字好往上往上这然后呢,我把它改成什么。
03:07
的吧。奥的味大的啊,然后这个地方要改成什么奥对吧,好把他呢下。我们对比一下两个结果,现在这个维斯个数还是三个吧,因为我当前客户端是不是没有退出啊,如果你退出了,重进了,它又变成什么。负一了,对吧,啊,它又变成负一了。好,然后啊。哎,出来啊,应该在那个还有一个so奥特。只有一个,也就是说你设置的reducer压根就不会干什么生效了,因为你只要写到all这个语法,他就认为你要做什么全局排序,那不好意思,我只给你一个video,跟我们之前学的一样吗?因为你我们之前说了,如果说你想用MR做全局排序的话,你得设置video的个数为。
04:08
一个对吧,啊为一个是这个意思啊,是这意思,而且呢,这个地方呢,说的我们还继续看一下。CD点点,然后那个说的呗,知道看了一下这个。下划线,哎,应该是零。这个里边我们当时是按照什么牌子的。员工编号吧,还记得吗?是员工编号还是什么?说。呃,那个结果在这。啊,按照部门编号啊,就是每个分区里边按照部门编号来的,来看一下这个结果是不是按照部门编号三十二十十,因为我们写了什么DC倒序三十二十时,好还有一个问题看一下零。这里面也有三十二十,还有一个看零。
05:04
好。20。那你想可能这块有的不理解了,那你这个按照。我写的,So,我们说了是不是排序啊,对吧,那问题来了,那你排序这块明显感觉到我写了三个video,最后出现了三个结果,是不是在MR当中呢,分了三个区。那你分区原则呢?对吧。啊,那分区原则呢。这是不是有一个这个问题在里边,因为你排序你是区内排序,我们之前所讲的你区内排序可以,但是你是不是有个分区规则,默认的什么哈希分区,那这块我们想的是不是哈希分区有可能吗?那哈希分区它按什么东西哈希分区。
06:06
不是按哈希分区啊,这块呢,它就是里边有一个随机算法啊,随机分配的,因为你没有指定分区字段。没有指定分区字段,我们接下来往下看一个来。这块呢,有一个叫。它是分区。啊,它这是分区,然后D标外呢,类似于MR当中的一个滑行线进行分区,结合缩外使用。啊,然后呢标呢要求写在搜之前,也就说你先可以按照什么东西进行分区,然后按照什么东西进行排序,那我们看一下这个语法,我现在想按照部门分区。然后部门分完区之后呢。我按照工资进行排序,也就是说最终我还是产生三个文件。OK吧,这三个文件呢,有一点问题,就这三个文件,每一个文件里面呢,有自己的什么。部门啊,有一个独立的部门是这个意思。
07:04
啊,有个独立的部门,那这个语法怎么写。还是一样的,因为我们这个直接打印出来是不是看不出来效果,所以还是同样的应该写到。文件里边对吧。然后呢?Directory吧啊directory,然后呢,本地的一个文件啊,我们还是放在OPT。这个module,然后还是一样的放在那个什么贝塔四对底下呢,我放一个。But。啊,放在这个目录底下啊,然后呢,我们写一个语法,这个语法呢就不一样了,Select,假如说我们还是一个新,OK吧,啊新,然后from这个emp这张表按照之前的是不是此时我们直接写so by对吧,这个时候呢,你应该加一个BY。第一个月半,我们说了按什么进行分区啊。
08:00
部门分区det。Number。对吧,然后按照什么排序啊,说半工资进行排序吧,啊也就是说这个意思啊,他呢可以限定分区条件,刚才我们直接写了缩派这个地方呢,你并没有写分区条件。啊,并没有写分区条件,OK,它这里面默认用的分区器也是哈希分区,它按照这个字段的哈希值来的,分区器是哈希,但是字段是它。字段,它就类似于你自定义一个分区器,是不是也可以。按照某一个中间有很多字段,按照某一个字段来进行分区啊,对吧?啊这个是可以的,我们看一下它这个结果啊,看一下它的一个结果,那我们部门是十二十三十。那哈希出来呢?除以三是吧,啊除以三。来,出来。诶,对他是我刚才写的是什么?是对他吗?他对他吗了,对他是哦,刚才没写logo是吗?那我们只能在哪看了。
09:14
这个上面应该会给我们建一个OBD module,然后一个加在这吧,这里边有三个,那我们看一下这个内容对吧,来。不用下载了,直接看嘛,他都把F杠对吧,这个目下我先看什么零,嗯,把这个东西拿下了。看一下他。买没问题吧,因为30模拟三余数为。零吧,分区不是看余数吗?没问题吧,啊,30个部门在零二区嘛,啊那一。嗯,哦,是这个地方改了。这个是1万。
10:01
号,然后同样的还有一个是什么。这个改成二对吧,改叹号。20然后里面呢,按照工资八八百,什么一千一两千九百五,什么三千三千啊按照里边排序的,按照里边排序的,这个通常情况下你要用想对分区内进行排序,一般的正常情况下我们要结合着什么。Dis by来做这个操作啊,要用这两个结合着用好,刚才我们所讲的那个说BY,我说的是随机,那有同学还有疑问,那我觉得有可能它是按照某一个字段,或者按照这个数据整体哈希值来的呢,对吧,这块来看一下啊,稍微大家括一下这块呢,就有对这个so,还有class,还有确啊等会我们再聊,它比较简单了,它就很简单。然后我找他里面呢,就有这个区别。他说so跟之间的一个区别。
11:00
啊之间的一个区别。这块呢,等会你要记住这个内容,等会我们来看一下,它这里面呢,就提到了这个随机性啊,随机性,因为它比较的是谁啊,最后它比较的这个还有一个,那我们先看一下这个class啊,这个很简单啊,这个很简单,为什么说呢,来看这。我们刚才所写的语法当中,是不是按照部门编号进行分区,然后按照工资进行什么排序?排序。当我们想按照部门编号进行分区,同时按照部门编号进行排序的时候,那我们写出来的语法是什么样子的?是不是这个地方同样的还写一个d number。能理解这个地方我们还不是写第一笔记,那么我要按照这个字段进行分区,同时按照这个字段进行什么排序,那就这个内容,那在你写这个内容的时候,你可以用这个什么。
12:03
克拉斯来代替。啊,就是当你区的外自段和solid自段相同的时候。你可以用class直接来代替。就是两个变成一个,它就是这个作用,所以说我们说呢,这个class呢,很简单啊很简单。的意义是意义是什么?那你这样啊,现在大家看到我们分了三个区,只有三个部门对吧,一个一个,假如说我们50个部门呢,分三个区有没有意义。能听懂。你们不要局限在我们这个数据范围吗?因为我们当前是三个部门三个分区,那我一个区里边只有一个部门,你说再按部门编号排序没意义对吧,但是我有50个分区呢。不是50个部门的情况下呢。一个对吧,我还是只有三个分区,那一个区里边是不是会有多个部门数据,那我再按这个部门排序有没有意义啊。有吧,啊,也就是说这个class本身很简单,就是当你分区作战和排期作战如果说相同的时候。
13:08
你可以用它来代替。能懂这意思啊,这个是这意思啊,好,然后呢,同时它还有一个问题就在于它只能审讯,不能指定B。啊,不能倒取啊,不能倒取这个意思,那如果你说分开的时候是不是可以倒取对吧?啊可以倒取,好,那接下来我们看一下这个class by刚才的结果啊在这,然后呢,我们再来预习一下它。啊,直接用这个什么class by就是disbu,然后呢,运行一下这个class啊,看一下它这个结果它是一样的啊,其实它一样的。好让它运行着啊,结果反正一样的,我们再描回来,刚才我们说的这个点,它是比较什么东西呢?这样的,它主要比较的是class by和so之间区别,他说了吗,这个。Difference对吧?啊,这个不同点不同点好,然后他说这个count有分区字段。
14:05
就来自于这个字段。但是你单独的使用so的时候。啊,同时他说了,如果有。多个reducer,因为如果说我设置的reduce个数为一个,你用结果是不是跟应该一样啊。对吧,因为只有一个这角色好,他说的前提,如果有多个,然后这个数据怎么放。随机放啊,哪个分区呢,是随机的。哪个分区是随机的,这他为什么要这样做?有什么好处啊?我们使用哈希分区的时候,它容易带来什么问题?对,数据倾斜问题,因为此时你写的一个搜狗语法当中。对于当前我们汉语来说,是不是你没有给定分区字段,假如说你只指定了速派。
15:03
对吧,因为我们说了,你第是来做什么呢。做分区的,也就是说你单独在使用缩字派的时候,你并没有指定分区字段,这个时候如果说框架内部决定,哎,我来决定一下,你按照某一个字段的哈希值来,假如说产生数据倾斜了,那找谁呀?所以说框架它不干这事,你没有指定,我也不给你指定某个字段来分区,我就什么尽量的随机的,哎,尽量均匀的干什么。放大。多个分区里边啊,尽量均匀的防止这个数据倾斜啊,所以呢,它并不是我们所想的那样,按照某一个阶段呢,它的一个哈希值来的啊,不是的。啊,不是亮的啊,那这块呢,就是我们说了这四个块。四个百,那我回头再捋一下啊,我把这个呢,把这个。
我来说两句