00:00
好,那接下来呢,我们看一下这个,当然这里面呢,可以按照所谓的什么别名啊等等这些东西一个排序啊,多个列排序,那就是逗号隔开。啊,假如说我想看先按照部门排序对吧,然后部门里边呢,我们就看什么薪水排行,那这个就是写两个版对吧,这个都标比较简单一点啊,然后我们跟重要讨论,这个就刚才我们说的是全局一个reduce进行排序,现在呢,还有一个这里边还有个sort,明显能看出来也是排序吧,Sort排序嘛,嗯,那这个地方呢,他就说。可以分多个video于级啊,但是每个reduce内部进行单独的什么排序啊,但是它达不到全局排序的一个效果,它达不到啊,也就是说我们看一下刚才是不我们已经设置过的这个参数了,等于三个对吧,那接下来我们看一下按照。
01:01
员工编号进行。对进行教训,我们看一下这个东西啊,你有可能会觉得这个东西呢,比较奇怪,我没抽了这款啊,我这。这个地方呢,我们放一个a name,放一个第number,我们不要看那么多对吧,或者说其他的东西我就不看了啊,因为你要写个新的话,它那个字段太多了,不好看是吧。注意我们设三个的,你看刚才我们设置的三是对他就分了,对吧,因为默认呢,它不是负一啊,负一根据S个来的,其实我们设置了为三,在这就有三个啊,它是三个区内呢,分别去排序,但是外关键的问题就是说他怎么分的这个区呢?你看这个数据出来了。五十三十三十三十二十十十,什么30能看出来规律吗?不能,对不对,好,那我们有一个办法来看一下啊,它分三个区,它我们其实主要搞清楚,其实so呢,它是在区内去排序的,我可告诉你它是这样子的。
02:19
这是一个区,到这是一个区,最后是一个区,它这样分区的,因为区内有序啊,所我们是不是第1PD number对吧,关键的问题就是在于他如他为什么要这样分区呢?我先把这个干什么,我保存下来。对吧,啊给它放在这,你看一下我刚才说的啊,其实你看这个顺序,这个到哪到十这对吧,这是一个区,然后到这个十,这有这个群,然后20 20有一个群,它是这样子的,那这个是怎么来的呢?我们看一下是不是这样子的,因为现在最后打印的时候,它把它打印在一起了,我们看不到什么效果,对吧,我们有办法我们把这个内容呢,写到文件里面。
03:01
这时我们想通过的方式给他写到文件里面做这个事情,你在这里边也也能做。如果杠一用追加符,你在文件里边是不是看的还是整体啊,我们希望它输出到什么三个文件嘛,三个不应该输出三个文件吗?什么000001002003这样的东西,对吧?啊。这个可以怎么做?忘了,虽然说不重要,但是你起码要有这印象啊。Right local director。不是,这个横是什么意思,为什么还记得吗?对吧?啊,我们可以用insert all,然后叫local d的味道,如果不加local,它用的是路径,对吧?那我们放在本地是不是好看一点啊,啊,Local,然后给他一个路径,这个路径呢,我们就放在当前路径底下,叫sort。
04:19
啊,就放在这个路径底下OK吗?啊,然后呢,是不是我们写的这个思索语句,但是一般的我们来放一个什么role form的最好,对吧,不放也行,它这个地方的50挨着,挨着就挨着呗,我们就不写了,你写到文件里边是不是应该要指定一个分割符啊,对吧,我们就为了方便看东西啊,所以我我们不写也可以啊这个当前目录搜的办,也就是说在当前目录在哪啊在这吧,它的话呢,在这任务呢,会生成一个说这么个目录啊,这里边东西太多了,我给它删写一下,有的东西就没必要把S新都给它删掉,然后R杠这个没必要,对嗯,这个东西id.TSD啊还点so索呀,都lo也不需要啊,这样个清爽一点是吧?啊没什么东西,So派时已经生成了,我们看下这边,哎,走完了,它没有结果,打印出来吧,因为他把结果写。
05:19
啊,搜的在里边了三个,因为我们分三个区,所以最后它一定是三个文件啊,但文件里边呢,其实我们看到就是这个东西,但是这两个数据是挨在一起的。对吧,啊,没有加上个服。好,你看一下,刚才我是说的从50到这个十对吧,好那么这个。没问题吧,啊是这样的,因为他说了是区内有序吗?对吧,如果说你这个十再往下多一个说句这是一个区,这还叫有序吗?不叫了,对吧?那么问题是我们是不是想搞清楚它到底是按照什么东西来分区的呀,对吧?其实它没有规律,对,没有规律来我们看一下,不是瞎说哈,我也会给你们瞎说是不是,因为其实一般的我们如果用说的话,我们会跟后面一个字段连用啊,我们接下来还会讲一个东西跟它连用,指定分区规则,因为当我们不指定分区规则的时候,我们想着可能是按照这个数字的,按照这个行数啊,或者什么乱七八糟这些东西,对吧?他不是的啊,它就是随机的,因为他害怕数据倾斜。
06:39
如果说他根据你查的内,或者说你查的一个其他的字段来决定它的分区规则,是不是有可能会产生数据倾斜,所以它是随机分配的啊,当然了,我们这个数据量比较小啊,看着好像也是倾斜,这个不叫倾斜啊,这这是。七条跟两条,这个不能叫倾斜吧,对吧?啊,这个不能叫倾斜啊,好,那我们看一下,稍微看一下在哪呢?在这so all the class distributed by这四个BY,这是我们要讲的。
07:09
对吧,好这一块在哪呢?我们给大家去找一下,就单独的使用这个,呃,So bad,我们看一下啊找一下在啊他这这边说了,他说说跟的一个区别对不对,对吧?啊它的一个不同点,呃,完之后呢,来看这啊看一下so。这个地方它其实呢。你看这啊,就这个就从这你从这看就行了,他说so,如果说这有多个reduce分区的话,那我们其实是数据干什么,随机分配的,呃,为了什么呢?
08:08
Distri就是为了分散数据对吧,防止数据倾斜的啊,防止数据倾斜的,但是这块有个点啊,就无论你对于同样的一个数据集,我这个S啊,我无论运行多少次,它都是这样子的,因为其实这就涉及到计算机世界的一个随机问题了。计算机世界的随机,它是真正意义上的随机吗?啊,不是的,它是尾随机,也就是说你数据相同出来的结果都一样,每次都一样啊,这个就不用测了啊,你说除非你把数据我加一条或者减一条,这种情况下它可能完全跟刚才就完全不一样了,对吧?因为计算机世界的随机是尾随机,它得有一个种子去触发,叫C的,不知道吗?就是在做抽象算法的时候,一般呢,我们会给一个种子,它会根据这个种子去计算如何去抽样,如何去抽样,而且在计算机世界里边用到的抽样算法,呃,有两个居多,一个是遵循这个波松分布,一个是遵循这个伯努利分布,波从分布,伯努利分布没听过这个应该听过,对吧?啊对,不不是正态啊,零一,这不是正态分布,不是正态分布,零一分布啊,零。
09:27
低分布,嗯,这这个如果不了解没关系啊,这个没关系,就知道一下,其实计算机世界里边呢,它是写好了一个随机算法的,然后呢,你同样的数据集去运行的时候,他给你的出来结果竟本然一样的啊,因为它但是有很多数据算法出来结果,诶就是说我用一个random的时候,它不一样啊,因为它的种子用的是当前时间。很多随机算法里边,种子用的是当前时间,它获取一下当前的系统时间,当然种子你可以自己给,如果你给定的种子一样,你出来结果一定是一样的,如果说你有当天时间,那你在运行的时候,时间是不是在变了,所以出来结果不一样啊,这一点知道一下就行了,在这里面呢,它是随机的啊,你不须就不要去找它到底哎是因为什么样的一个分区规则了啊,它没有它自己的一个分区规则,我们只需要知道对于solid半而言呢,它是区内怎么样。
10:24
有序哎,它是区内有序就好了,它是一个区去去做的一个排序啊,是这样的一个过程啊。
我来说两句