当前位置: 首页 > news >正文

Spark RDD Persistence

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

https://spark.apache.org/docs/1.2.1/programming-guide.html#rdd-persistence

在spark中最重要的能力之一就是在多个操作中可以持久化(或者叫做缓存)一个数据集到内存中。当你持久化一个RDD,每个节点存储这个RDD的一部分,

并且在其他的action中重用这个结果集(或者这个结果集中抽取的数据)。这个行为让接下来的action变的更快(通常快10倍)。缓存是在迭代算法和快速交互中的关键工具

你可以使用persist()或者cache()方法来持久化RDD,第一次RDD是通过一个action计算而来的,它将在某些或者全部节点的内存中保存。spark的cache是容灾的--如果RDD中任何一个partition丢失,丢失部分将使用原来创建它的transformations来重新计算。

除此之外,每个RDD可以使用不同的存储级别来持久化RDD,例如,持久化数据集到硬盘,持久化数据集到内存并且使用java对象序列化的方式来存以节省内存、在多个节点间对数据集做冗余备份或者使用tachyon做off-head的存储。

这些等级是通过传入StorageLevel对象到persist()中实现的。这个cache方法是使用默认存储级别的快捷方法,默认是StorageLevel.MEMORY_ONLY(只在内存中存储非序列化的对象)

什么样的存储级别应该选择?

spark所提供多个存储级别意味着提供多种内存使用量和cpu效率的交易策略。我们推荐按使用下面的流程来选择一个:

* 如果你的RDD数据集可以使用默认的存储级别(MEMORY_ONLY),那就使用这个。这种设置是最能发挥cpu效率的选项,让基于RDD的操作尽可能最快速的运行。

* 。。

 

Removing Data

spark会自动监视在每个节点cache的使用情况,并且会通过LRU模式删除旧的数据。如果你想手动移除RDD而不是等待它自动从cache中移除,使用RDD.unpersist()方法即可。

 

 

 

 

 

参考

The on-heap store refers to objects that will be present in the Java heap (and also subject to GC).

 On the other hand, the off-heap store refers to (serialized) objects that are managed by EHCache, 

 but stored outside the heap (and also not subject to GC). 

As the off-heap store continues to be managed in memory, 

it is slightly slower than the on-heap store, but still faster than the disk store.

(http://stackoverflow.com/questions/6091615/difference-between-on-heap-and-off-heap)

 


转载于:https://my.oschina.net/forrest420/blog/470341

相关文章:

  • atitit.高级编程语言的特性 and 未来趋势与进化.doc
  • WindowsServer 2008 AD搭建FTP隔离用户
  • [华为机试练习题]13.火车进站
  • FlowLayout浮动布局
  • [转]Spring MVC 中的基于注解的 Controller
  • 该项目的建设maven片:4.协调和依赖,spring依赖注入demo
  • jQuery 弹出窗口的形式一直是具体案件的中心
  • 收集的一些链接
  • 盘点20款表现出众的HTML5游戏
  • VC++ 获取系统时间、程序运行时间(精确到秒,毫秒)的五种方法
  • Linux系统中nc命令的基本用法
  • nginx使用GeoIP限制访问并支持白名单
  • 2015Q1中国手机游戏市场监测报告
  • 烂泥:学习ubuntu之快速搭建LNMP环境
  • U盘安装Windows
  • 【Leetcode】104. 二叉树的最大深度
  • 【剑指offer】让抽象问题具体化
  • canvas 高仿 Apple Watch 表盘
  • mongodb--安装和初步使用教程
  • PHP 程序员也能做的 Java 开发 30分钟使用 netty 轻松打造一个高性能 websocket 服务...
  • Tornado学习笔记(1)
  • 成为一名优秀的Developer的书单
  • 纯 javascript 半自动式下滑一定高度,导航栏固定
  • 从@property说起(二)当我们写下@property (nonatomic, weak) id obj时,我们究竟写了什么...
  • 从零开始学习部署
  • - 概述 - 《设计模式(极简c++版)》
  • 更好理解的面向对象的Javascript 1 —— 动态类型和多态
  • 基于MaxCompute打造轻盈的人人车移动端数据平台
  • 简单实现一个textarea自适应高度
  • 详解移动APP与web APP的区别
  • 转载:[译] 内容加速黑科技趣谈
  • UI设计初学者应该如何入门?
  • 策略 : 一文教你成为人工智能(AI)领域专家
  • 微龛半导体获数千万Pre-A轮融资,投资方为国中创投 ...
  • #{}和${}的区别是什么 -- java面试
  • #数学建模# 线性规划问题的Matlab求解
  • #我与Java虚拟机的故事#连载16:打开Java世界大门的钥匙
  • (07)Hive——窗口函数详解
  • (13)Latex:基于ΤΕΧ的自动排版系统——写论文必备
  • (day 12)JavaScript学习笔记(数组3)
  • (Mac上)使用Python进行matplotlib 画图时,中文显示不出来
  • (层次遍历)104. 二叉树的最大深度
  • (附源码)spring boot基于Java的电影院售票与管理系统毕业设计 011449
  • (附源码)springboot家庭财务分析系统 毕业设计641323
  • (排序详解之 堆排序)
  • (原創) 如何動態建立二維陣列(多維陣列)? (.NET) (C#)
  • (转)mysql使用Navicat 导出和导入数据库
  • (转)Oracle存储过程编写经验和优化措施
  • (转)视频码率,帧率和分辨率的联系与区别
  • ***汇编语言 实验16 编写包含多个功能子程序的中断例程
  • .NET Core WebAPI中使用swagger版本控制,添加注释
  • .NET delegate 委托 、 Event 事件,接口回调
  • .NET Framework 3.5中序列化成JSON数据及JSON数据的反序列化,以及jQuery的调用JSON
  • .NET Remoting Basic(10)-创建不同宿主的客户端与服务器端
  • .net 中viewstate的原理和使用