00:00
那接下来咱们来对比一下Spark circle里面的DFDS,那同样的,瞅瞅软本这边也有案例啊,Data set catch DEMO。那这边呢,也是查出这张COSPLAY2个多G的表啊,然后呢。直呃,这边用的是一个DS对吧,直接S样例类转成的是一个DS之后直接进行catch,那我们同样聊一看一看它默认级别是啥对吧?点进来那我们发现他用的是data这个类啊,就不是RDD的这不一样啊,那这接下来它调用persist,那看一下。它调用一个缓存管理器,然后呢,缓存查询还要再点一次啊,再点进来,那么其实这里就可以看到,他给我们传入了一个词memory and Dis,它会默认是使用内存跟磁盘的。
01:00
这是这么一回事啊。默认不一样,RDD不一样,那我们就进行一个catch没了啊,那咱们同样还是。把它执行起来,先把原来的停了啊。好,翻过来还是一样的参数,这210G3个,呃,每个两盒一,每个六个G啊回车。好吧,让他慢慢去跑,咱们来回到阳页面。看到这个running。点进来。还没开始,嗯,还没开始,这就是我刚才提到的,如果他没开始执行缓存的话,咱们点storage这边一直都是啥也没有的啊,那你就得等一会儿,等他开始了。
02:15
这边才40K,应该不是啊。嗯。好,大家可以看到这个数有其中有一个数据明显增多了,那肯定是开始缓存了,我们这个时候点storage。是可以看到有的吧,对吧,RD name是这个。而且呢,大家看一看。已经缓存了四个分区,完成了100%的缓存。一共才多大?320兆左右。咱们再同样截个图。放。这个相比咱们前面用RDD是不是高了很多啊,而且他也现在他没有用到磁盘啊,因为这个内存完全够了,如果内存不够,它是不是还可以呃,放一部分在磁盘里面。
03:19
那我们直接来对比另一个吧,啊,咱们这边还。用了一个序列化缓存做一个对比,那我们当前这个呢,是只仅仅使用了一个存储级别为内存加磁盘,那我们再结合这个缓存再来试一下啊,再结合这个序列化啊序列化,那这个在咱们代码里边data set catch,还有序列化。这个东西那。大家注意咱们之前讲的Java序列化,Kr yo序列化,这个是针对RDD而言的。那如果是Spark circle,就DF啊,DS这些东西,它默认有一个encode啊,就编码器是由它来选择的,就相当相当来说,你可以理解为Spark circle自个儿实现的,他也有可能使用到K的方式。
04:13
这个就不需要咱们再去说注册呀什么的啊,这就是circle。那我们这边存储级别只需要更改成一个内存和磁盘,再加上一个序列化,那我们来对比一下效果。我得拷贝一下这个执行的六个G啊。先把原来的停掉啊,好执行。为什么分啊,为什么我的分区只有四个是吧?那是因为我的雅安,呃,那个其中有一个节点不健康,然后其实我只启动两个ex而已啊,每个两盒嘛,那不就一共才四个。
05:02
这是我的环境问题,回头我再去把那个磁盘清一清。好了,这个是running,那我们还是从运行时的界面点进去。进来之后老规矩啊,点开瞅一瞅。现在肯定是没有的。哎,有一个洞了,那说不定有了。那其实大家发现呢。你发现好像现在用的序列化呢,它反而稍微多了一丢丢,对吧?啊,同样都是完全完成了一个缓存,那其实这个就是咱们刚才提到了它。
06:06
Spark里面不像咱们说纯RDD的有一分区分,Java序列话,还有KL序列话,它们的区别,那如果咱们Spark circle d fds对象呢,它是用了自己的一个encoder啊,自自己的一个编码器,他会自己去。自自己实现一个二进序列化。那这个时候大家可以发现这个数据量其实严格来讲是不是差不多都300多兆,300多一点,所以呢,对SPA circle口而言,咱们用不用序列化问题不大,但RDD呢,你反而要去注意,这个也是在咱们开头所讲到的,其实它对Spark circle做的很多很多的优化措施啊,所以性能上来会好一点啊,不用咱们去管太多事啊。好,这是咱们对于内存这一块的对比。
我来说两句