00:00
好了,同学们,我们刚才已经把环境准备好了,那接下来咱们要做的呢,就是执行业务操作了,对吧?那这个执行业务操作咱们就得需要跟我们之前的这个分析的图形来做一个关联了啊同学们,来首先第一个在我们当前这边有一个文件的概念,它要读取文件,所以来咱们先把文字性的描述写上,一读取我们的文件。那这个文件中就包含着我们的原始数据,对不对,就是一行一行的数据啊,咱们叫读取文件,好,那你读取文件以后,应该是把这样的数据读到,所以我们读取文件啊,获取一行一行的数据,这个我们先告诉大家,我们是以行为单位来读取咱们的数据啊,是这样的,好了,那现在我们读取之后,大家想一想,我们这边就应该是比方说我们的hello。我们word,那这其实就是一行嘛,里面一行当中会有多个单词对吧?好,那么我们第二步是什么呢?我们的第二步大家可以看到在咱们的这个位置是这样的,我们读取的是一行一行的单词,但是我们想要的是一个一个的单词,所以我们要将我们的一行一行给它拆分成一个一个对吗?所以来我们写上将。
01:21
我们一行啊,我们的数据进行拆分。啊拆分,然后呢,形成啊形成一个一个的单词,这个咱们称之为叫分词效果啊分词效果好,那继续来写个三,那么这个三呢,我们来看一看啊,咱们来看一看,那么当我们把这个单词给它分解下来之后,那接下来我们要想办法把相同的单词放在一块儿。这样的话便于我们的统计,对吗?所以来咱们接着写第三步,第三步呢是将我们的数据它根据单词。咱们的单词啊,咱们的单词进行分组啊,那么便于统计,便于统计,你分组了以后,相同的单词在一块儿,你统计起来就更加的容易,那么我们刚才啊,其实是把我们的hello,把hello,我们的word,这个其实是一个我们比较完整的一一行数据,所以啊,我写上一个我们的引号,那你想变成什么呢?你想变成的就是我们的hello,然后呢,还有就是我们的这个叫做word,诶就是它。
02:31
好了,那你现在变成这个以后,那有可能会有多个hello啊,还会有多个word呀,诶就是这样,那么在这个时候呢,我们就是给它进行一个分组,那么分组的话就意味着我们括号我们的hello就会放一块,Hello就放一块儿,诶就是这样,然后呢,我们的word放一块儿啊,我们的word啊,咱们这个叫hello word嘛,咱们叫hello word来放一块就可以了,所以啊,你便于统计,可是那我们接着往下来写个四,我们便于统计,怎么便于统计啊,是因为你在一个组当中,那么这个时候。
03:06
我们一个组当中的个数不就恰恰是它出现的次数吗?所以来我们写上对我们的分组后啊,分组后的数据进行我们的聚合,但这个聚合说的不准确,为什么呢?因为我们只想取得它的一个诶,我们的数量,所以呢,我们进行什么进行转换,这个转换是什么意思呢?大家看一下,你本来是这样的一个数据,你想变成什么,你想变成我们的这个地方,来我们写上咱们应该变成的是hello,我们给他一个三,对不对,然后再来我们写上一个word啊,Word给他一个二,这个就叫做我们的转换,记住在skyla语言当中,将A变成BA,它就是转换的意思,那所以用把它变成它不就没有问题了吗?对不对?同学们,所以这样的话呢,我们进行转换就是OK的,那么你转换以后,我们需要将它展示出来嘛,否则你怎么知道对还是错呢?所以我们的第五步。
04:06
来将我们的转换结果,将转换结果,哎,我们采集到啊,采集采集到我们的控制台打印出来。好了,所以我们现在呢,是有五步我们的操作,那行,那我们现在按照我们的这个图形,我们就把每一步呢,给他稍微的说了一下,那接下来我们就一步一步的把代码给它写上,首先第一个它读取文件,获取一行一行的数据,我们先给大家把数据准备一下,因为有文件嘛,那我这里呢,点击我们的new,在我们的最上面的project这个位置,我们点击new,选择我们的directory,我写上一个叫date加个S,表示放数据的地方,点击OK,点击完成以后,在这里我准备两份文件,1b.TST,然后我们叫hello,我们叫做word啊,咱们叫做word或者hello啊,我们叫做Spark都可以啊,没问题,写完之后把这个文件给它复制一份,把它复制一份啊来我们这里来拷贝复制,我写个二啊,两份文件,这个呢,跟我们画图是完全一致的两份文件,只不过里面的内容不太一样。
05:19
这个不重要啊,好,那我现在准备开始了,你的文件里面的数据就是一行一行,还还有多个单词,现在我们就准备来读取它,那这个怎么读取呢?首先第一个咱们的Spark的环境对象,它有这样的功能,所以SC咱们叫做点,它里面会有一个方法,这个方法的名字叫text file,这个text file呢,它可以传一个路径,这个路径诶恰恰就指向你的那个数据文件所在的路径就可以,所以我们的date把这个给它加上,那么加上了以后,我们来我们点咱们叫VAR回车,回车以后,那这个时候我们可以拿到我们的一行一行的数据,我们叫做LS啊,一行一行的数据,那么我们当拿到一行一行的数据之后,那么这个时候记住了,我们就等同于把它们拿到了,可是你拿到它不行啊,你要变成一个一个单词呀,所以我们的第二步要将一行一行的数据。
06:20
已经拆分形成一个一个的单词,这个操作其实我们称之为叫做扁平化操作。所以咱们接下来。咱们说一下,咱们叫做lines,点叫做点,我们叫做flight map,在SKY当中集合就有个方法叫flight map,叫做扁平映射,对吧,我们这儿也有同样的方法,那这里呢,所谓的扁平映射就是把我们一行的。字符串变成一个一个的单词,但是有一些规律,什么规律呢?咱们的数据是不是用空格把单词给它隔开的,所以在这里呢,我写上一个下划线点,我们叫做split,诶,写上一个空格,这个是我们scla当中的一个质检原则,匿名函数是可以简化的,还记得吗?同学们诶,我希望你们能够记住啊,因为时间可能有点长了,担心你们会忘记,但是好就好在这些方法感觉还是比较熟悉的,对吗?所以来点,点了以后VR回车有个快速提示的模板,那么这里面就会是word,它就会把一行一行的数据拆成一个一个的单词,这个咱们称之为叫扁平化。
07:35
将我们的整体啊,咱们的整体咱们叫拆分成我们的个体的操作啊,就是扁平化操作。呃,接下来将数据根据单词进行分组,便于统计,你前面已经变成一个一个单词了,那么这样在我们后面把相同的单词放一块儿,那么就是分组的概念,所以来我们的worse啊,我们来点点了以后有一个叫做我们的group by,它有一个分组,这个BY什么意思,就是通过什么什么分组,通过什么样的规则进行分组,那咱们知道吗?你现在就是通过单词分组啊,所以你给我的元素就是单词,为什么?因为在这个里面它全都是单词,那么每个单词就按照单词分组,相同的单词就会放在一起,所以来我们写上咱们叫做word,你给我的每个元素是单词,我就按照单词分组,这是我的分组规则,然后点va。
08:35
回车,回车之后大家可以看到在这个地方就是我们的group啊,咱们的group,那或者咱们这么说吧,叫word,咱们的group,那么大家可以看到它里面其实是一个tapple,是一个tale,这个tapple当中的第一个就是单词,为什么?因为根据它来分组嘛,所以它就是单词分组的K,而这个叫做什么呢?叫做可迭代的集合,它里面的元素就是相同的单词所形成的可迭代的集合,诶,所以啊,咱们最后的结果就变成了这个样子,但这个是咱们想要的吗?不是,咱们想要的是我们的数量,而不是单词本身,所以说你光给我得到一个可迭代的集合是不够的,对吗?同学们,所以怎么办?我们需要把它的结构发生改变,你不是一个可迭代的集合吗?而我要的不是里面的数量吗?所以在这种情况下,我要对它的结构进行转换,那转换的话咱们就叫word group点我们叫。
09:35
叫做map结构的转换,我们一般都会用map,那么这个map当中啊,它要对我们他的数据做处理,为了方便,我们这里应该有一个什么,咱们叫做诶模式匹配,那这里写上一个case,这个case呢有两个,一个是那个叫word单词,还有一个就是那个集合,咱们叫list,诶就可以了,好,那你这么写完以后,一个是单词,一个是list,那这个时候我们需要干嘛呀,变成这个样子,所以我们这里括号,括号以后叫做word,再来一个list,点我们的size,这个size呢就是集合的长度,咱们这么写就可以了,写完了之后来吧,我们这里写上咱们就叫word to我们的count,诶就是这样,这个呢,其实就是word to count了,诶已经得到了,但光得到不行,或者看结果呀,所以第五步,将转换的结果采集到控制台来打印。
10:36
所以word to count点,我们有一个方法叫collect,叫采集,这个采集那会把我们的数据给它采集过来,来VR回车,回车以后它会形成一个速度,咱们就叫R就可以了,嗯。那么既然是个数组的话,那么这个时候我们就可以循环便利,咱们点咱们叫for each,然后print就可以看到咱们真正统计的结果了啊同学们好吧,那我们现在试一试吧,因为我们的代码基本上也都写完了啊,来运行一下看看结果。
11:10
那么你会发现在写的过程当中啊,这个跟咱们学skyla的时候的那个word count非常的类似,当然了,有些方法咱们以前可能没有接触到,比方说读取文件,咱们读取文件用的是一个叫text file,这个之前是没有用过的,它是Spark自己的方法,你像别的方法呀,感觉还是比较熟悉的,对吗?诶,Flat map呀,我们的group呀,包括咱们的这个map呀,诶这些东西咱们之前学SKY集合,多多少少大家都会去什么学习练习,我相信掌握的应该不错啊。好,回过头来看咱们的这个执行,大家会发现没问题,这是我们刚刚给大家写的这个单词,那现在统计结果应该是对的啊。
我来说两句