Spark中一个很重要的能力就是可以将一个数据集通过操作持久化(或者说缓存)到内存中。实例化每一节点会存储数据集的任何分区的内容,这样其他的 action 就能在内存中重新利用并执行计算。这样就能让之后的 action 操作变得飞快。这也是 迭代逻辑和快速的交互 所使用的关键工具。
使用 persist() 或者 cache() 函数来标记一个 RDD 是持久化的。当这个 RDD 在首次被一个 action 计算后,他就会一直保持在内存中。Spark 的缓存是具有容错能力的,如果 RDD 中的任何分区丢失了,他会重新调用生成该 RDD 的transformations以修复。
另外,每一个持久化的 RDD 能够使用不同的存储水平来持久化。使用 StorageLevel 对象在 persist 上。而 cache() 函数是持久化在内存(StorageLevel.MEMORY_ONLY)的快速写法。
所有的持久化水平如下:
返回搜狐,查看更多
责任编辑:
声明:该文观点仅代表作者本人,搜狐号系信息发布平台,搜狐仅提供信息存储空间服务。 免责声明:本网站部 分文章和信息来源于互联网,本网转载出于传递更多信息和学习之目的,并不意味着赞同其观点或证实其内容的真实性。如转载稿涉及版权等问题,请立即联系管理 员,我们会予以更改或删除相关文章,保证您的权利。对使用本网站信息和服务所引起的后果,本网站不作任何承诺。