00:00
那我们刚才啊提到了说我们的这个持久化可以放到内存当中,我们是不是也说过了,它是能够放到我们的什么,诶磁盘当中的,为什么呢?因为我们的内存它不安全嘛,所以放到磁盘当中可能会更好一些,那所以这个地方其实除了catch以外,它还有一个方法,咱们叫map r DD点叫persist,哎,这个方法,这两个方法呀,其实啊,大家看一下,我们点击cash点。点完以后你会发现一样的。这两个方法完全一样,所以为什么叫持久化呢?就是因为它完全一样啊,就是这样,那么我们再点这个persist,你会发现它其实调用的还是这个方法,只不过传了不同的参数,这个参数呢叫存储级别,你想把你的数据存在什么地方,它默认情况下叫memory only,所以啊,咱们这样就说一下,来我们的cash啊,Cash它默认持久化的操作,只能啊将我们的数据保存到我们的内存中,那么如果想要啊,保存到我们的磁盘文件啊存储的级别,那这个级别在哪给呢?就在这个persist当中去给就行了,这个咱们就不要了啊,OK,那我们这就写上一个啊来,咱们去点一下,点它里面就有一个叫做storage level,那么这里呢,我们就点一下,点完以后咱们点击OK,点点了之后大家会发现有很多呀。
01:31
其中就有一个叫memory only,还有什么东西叫Dis only,还有叫Dis only to,这个to呢表示副本的意思,因为你要保存成文件就有副本的概念,这样的话会更加的安全,对吧?或者呢,你的内存和DIS4个都可以保存,什么意思呢?当我们保存到内存当中的时候,我们的内存不够了,需要一磁盘就给放到磁盘当中,但是我刚才这个叫memory only是什么意思,就是说当我们的内存不够的情况下,按理说应该一写磁盘了吧,但是你的数据是不能一写的,它就会丢弃啊,就会丢弃,所以啊,它的存储级别会有很多种不同的,这个咱们了解一下就可以了啊,比方说我们就写上什么,咱们叫disk only就可以了啊,所以说我们的级别你要根据需要自己去选择啊,这是没有问题的,嗯。
02:23
好,回过头来咱们看看课件,嗯,他说了,RDD通过cash方法将前面的计算结果进行缓存,默认情况下会把数据已缓存在我们的Java虚拟集的堆内存当中啊,但是这两个方法被调用时呢,它是什么呢?我们说啊,并不是立即缓存的,什么意思呢?大家看一下,其实啊,它是在我们做行动算子的时候才真正的给它缓存起来,为什么?因为你不触发执行的话,哪来的数据呢?没有数据的话,它怎么可能执行呢,对不对?所以啊,这里呢,我们还要说一个事情啊,就是我们的持久化操作,它必须是在我们的行动啊算子执行时啊执行时他什么的完成的,你连出个这个行动都没做,没数据那怎么可能缓存和持久化呢?根本就做不到,对不对,这个是能说得通的啊,然后呢,接着往下啊,他说了我们这个RDB将它的数据将会被缓存。
03:24
在计算节点的内存当中,并供后面使用,说白了就是重复使用啊,然后下面呢,会有存储的级别在这里面就行了,诶老师,难道它只有这样的功能吗?其实也不是,呃,在某些情况下呀,大家回过头来看一下,我们说了,其实不仅仅是重用的问题,还有一个就是说,如果前面的这个执行的时间太长了,那么我们为了提高效率也会给他干嘛呀,加上我们的持久化操作,你说什么叫重用啊,大家想想,万一我的这个地方就走一遍,我不走这个的话,我还需要重用吗?不需要对不对?那就好像感觉没什么用,但其实不是,就因为我们在执行的过程当中,如果前面的执行步骤它太长了,它太长的情况下,如果你出现了问题,你在从头走的话,你又会花很长的时间,这样的话性能就非常的低,所以如果能够把那个耗时比较长,数据比较重要的数据呢,保存到我们持久化当中,那么这样的话。
04:24
性能数据的安全性都可以什么呢得到保障,这不挺好的吗?对不对,所以啊,记住啊,我们的这个cash持久化不见得非得是重用啊,嗯。所以咱们说一下,咱们这样来说一下咱们RDD啊,咱们对象的这个持久化操作啊,持久化操作它不一定啊,不一定它是什么呢?为了我们的重用,那么哎,咱们叫重用啊,就是这个意思,嗯。好拷贝啊来,那么在我们说什么呢?数据啊,执行较长啊,或我们什么数据比较重要的场合,比较重要的场合我们也可以啊,也可以采用啊,我们的持久化操作好了,同学们把这个呢,咱们理解一下啊。
我来说两句