Spark之我看什么是RDD

转移停顿
推荐于2017-11-27 · TA获得超过1.3万个赞
知道大有可为答主
回答量:3152
采纳率:100%
帮助的人:5217万
展开全部
一般来讲,对于陌生的名词,大家的第一个反应都是“What is it?”。
RDD是Spark的核心内容,在Spark的官方文档中解释如下:RDD is a fault-tolerant collection of elements that can be operated on in parallel。由此可见,其中有两个关键词:fault-tolerant & in parallel。首先,容错性是RDD的一个重要特性;其次,它是并行计算的数据。

RDD的中文解释为:弹性分布式数据集,全称Resilient Distributed Datasets。宾语是dataset,即内存中的数据库。RDD 只读、可分区,这个数据集的全部或部分可以缓存在内存中,在多次计算间重用。 所谓弹性,是指内存不够时可以与磁盘进行交换。这涉及到了RDD的另一特性:内存计算,就是将数据保存到内存中。同时,为解决内存容量限制问题,Spark为我们提供了最大的自由度,所有数据均可由我们来进行cache的设置,包括是否cache和如何cache。
(关于cache的设置以及Spark的一些基础概念,http://www.dataguru.cn/forum.php?mod=viewthread&tid=295317中解释得很详细。)
如果看到这里,你的思维里对RDD还是没有任何概念的话,或许可以参照我的形象化理解:RDD,就是一个被武装起来的数据集。
主体:a、由源数据分割而来,源码中对应splits变量;
武器有下:b、数据集体内包含了它本身的“血统”信息,即dependencies变量,存储着它的父RDD及两者关系;
c、计算函数,即其与父RDD的转化方式,对应源码中的iterator(split) & compute函数;
d、一些关于如何分块以及如何存放位置的元信息,eg:partitioner & preferredLocations。
有了这些武器,RDD的容错机制也就显而易见了。容错,顾名思义就是在存在故障的情况下,计算机系统仍能正常工作。 容错通常有两种方式 checkpoint 和logging update , RDD 采用的是 logging update 。 Checkpoint( 数据检查点)意味着要在各个机器间复制大数据,花费会很高,这种拷贝操作相当缓慢,而且会消耗大量的存储资源,因此deserted。 Logging update( 记录更新),仅支持粗颗粒度变换,也就是说,仅记录在单个块上执行的单个操作,然后创建某个RDD的变换序列存储下来,数据丢失时,就可通过“血统”重新计算,恢复数据。Nevertheless,血缘链(变换序列)变得很长时,建议用户此时建立一些数据检查点加快容错速度。(saveAstextFile方法手动设置)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式