00:00
好了,同学们,我们接下来来讲一下,这个叫flat map啊,咱们叫扁平映射,这个扁平映射呢,其实跟skyla集合当中的那个flat map的含义啊,包括功能啊都是一样的,没有什么太大的区别啊,底层的那个我们的并行计算呀,这种操作其实我们都暂时不用管了,前面咱们介绍过吗?这里咱们就不管它了,那我们的看这个功能啊,它就是把咱们的整体拆分成一个一个的个体来使用,所以咱们一块来看一下。来拷贝我们写上一个零四,然后呢拿过来点击它,好把这个呢放过来,那首先我们这里呢就不要了啊,把这个去掉,然后呢,我们的数据这么写可能也不是很合适呀,所以来我们写上叫list,写上个一二,然后写上一个list,我们的三和四。啊,同学们记住了,我们现在的一二,它是个整体,为什么呢?是个历史的,我们的三和四也是一个整体,但是我们这不是想要的,我们想要的是独立的一,独立的二,独立的三,独立四,就是把1234给我拆开独立来使用,那么在这种情况下,我们的RDD的这个类型它就有所变化了,所以点点了以后VAR回车,回车以后大家有没有发现它所需要处理的数据类型是一个集合,它是个整体吧,但我们想要的是个体啊,所以点我们叫做flat map,那么你的flat map要把我们的每一个我们的整体,那么就是个list,我要把它拆成我们的个体对不对?那你要拆成个体的情况下,大家看一个整体要拆成我们的个体对不对,那就是意味着拆成多个,但是你的返回,你不能说返回三个子不可能,对不对。
01:53
你只能返回一个值,所以说你还要把这三个值呢,做一个简单的封装,哎,老师,不对呀,你看前面是个历式,怎么后面还是个历史呢?前面这个历史这样是我们数据的元素,记住啊,而我们这个list史是用来做封装的,把每个个体为了一块返回做的封装,这是两回事儿,所以这个地方我们直接写个list没有任何问题,好,那我们写上点,我们叫VAR回车,回车以后大家有没有发现这个里面处理的数据类型就是int了,而刚才是一个集合,它把里面的数据全都给它怎么了?诶,拆开了,所以这个呢,我们叫flight r,好,我们拿过来拷贝,拷贝以后点我们的collect,然后for it,然后print。
02:40
运行一下。运行以后看结果。同学们把这个呢,我们稍微的去考虑一下啊,去考虑一下这个不要误会了啊。哎,你看1234展示出来了,那好,那么我们这里呢,再来啊,我们再来,再咱们再演示点别的,嗯,来,我们写上一个一。
03:07
然后呢,点击OK,那比方说像咱们之前呀,Word count,你word count的时候,大家想一想,咱们现在的这个,它里面是不是就是我们的hello,我们的skyla,然后呢,写上一个叫做hello啊,我们叫做什么呢?叫Spark吧,然后这个地方我们把这个去掉,应该是一个string,那这个时候我们也要扁平映射,为什么?因为咱们的这个是一个整体,它是一个字符串,而我想要的是一个一个的单词,那么一个字符串就要被拆成多个单词,对不对?所以呀,咱们的RDD点我们的flightt map,你把我们的字符串我要拆成一个一个的单词,所以S点我们叫split,给它一个空格,对吧,你这么写就行了,诶老师,那这么写了以后怎么就可以了呢?诶,因为他返回的结果是不是一个可迭代的集合呀。
04:07
只要是一个可迭代的集合都是满足要求的,大家看一下,我们这里面不就是要求返回一个可迭代的集合吗?所以呀,这么写是完全可行的,那好,那这个呢,我们直接点叫VAR回车,回车以后你会发现,发现什么呢?我们处理的数据的类型是完全相同的,你在之前是字符串,那我们扁平化之后依然是字符串,是因为含义发生了变化,这个表述的是一个完整的字符串,而这个表述的是一个一个的单词,对不对?所以点what啊,咱if what去了,咱们collect,点我们的for each print。好了同学们,那我现在呢,我的这个地方就来看一看,嗯。
05:00
这个结果呢,就是每个单词就都有了,对不对,哎,就是这个意思啊。
我来说两句