温馨提示:文本由机器自动转译,部分词句存在误差,以视频为准
00:00
接下来同学们我们来思考一个问题,Map和map parts的区别,其实我们前面已经大概的介绍了一下,对不对?那我们来看看我们这里说明啊,从数据处理的角度来讲,Map算子呢,是分区内一个数据,一个数据的执行,它类似于串行的感觉,记住啊,我说的是分区内,而map partitions的算子呢,它是以分区为单位进行的批处理操作,所以说从性能上来讲的话,包括这种操作来讲的话,我们的这个map partitions其实会更好一些啊。那么从功能的角度来讲,Map算子主要的目的是将数据源中的数据进行转换和改变,比方说把一变成二,把A变成我们的B,这是一种转换和改变,但是它不会减少或增多数据,你原来是十条,现在我们map之后应该还是十条,但是呢,我们map partition这个算子呢,就不是这样了,它需要传递一个迭代器,返回一迭。
01:01
排气它没有要求元素的数量是不是保持一致,它没有这个要求,所以你完全是可以增加或减少数据的,像咱们刚才不就做了一个我们的减少吗?其实那个fielder是不是也能减少吗?那你增多行不行?当然也可以了,所以从功能的角度来讲,你要把它们俩区分开,它们的作用是不一样的。然后呢,性能的角度,他说了map算子因为它类似于串行操作,所以性能是比较低的,而我们的mapbition算呢,它类似于批处理,它的性能比较高,但是map part算子呢,会长时间占用我们的什么内存啊,这个写的有问题啊,这个应该是我们的内存,那么这样会导致内存啊,它不够用,那么出现内存溢出的情况,所以在内存有限的时候,我们不推荐使用我们的map partition,我们推使用map操作,即使它慢一点,我们只要能够成功。
02:01
这不挺好吗?所以啊,我们有的时候需要了解这么一个概念,叫完成比完美更重要,你先不要考虑说性能怎么高,速度怎么快,你先考虑你能不能把它完成了,完成了之后我们再去考虑什么我们的性能啊,咱们的速度之类的。
我来说两句