Spark是大数据的重点,而rdd则是spark的重点

 对于学习大数据开发的人而言,关于spark的认知、理解、应用就显得尤为重要,而在spark之中一个相当重要的点就是rdd,那么rdd究竟有哪些优点和特性,决定了其在spark中的地位呢?
首先,我们来了解什么rdd

它是Spark处理流程中的主要对象。RDD(resilient distributed dataset, RDD),即弹性分布式数据集,是一个容错的、并行的数据结构,可以让用户显式地将数据存储到磁盘和内存中。RDD就是一个不可变的分布式对象集合。每个rdd都被分为多个分区,这些分区运行在集群重的不同节点上。
其次,我们来了解rdd的特点
对比往往能够看出更多的特点。RDD相比较于Hadoop的MapReduce,提供了一组丰富的操作API。RDD的操作类型分为两类,转换(transformations)和行动(actions)。
Transformation:它将根据原有的RDD创建一个新的RDD。常用的transformations操作包括map、filter、flatmap、mapPartitions、mapPartionsWithIndex、sample、union、distinct、groupByKey、reduceByKey、sortByKey,join、cogroup、cartesian。
Actions:对RDD操作后把结果返回给driver。常用的Action操作包括:Reduce、collect、count、first、take、takeSample、saveAsTextFile、saveAsSequenceFile、countByKey、foreach。
最后,我们来了解rdd的工作原理
应用程序通过不同函数对RDD进行操作,实现RDD的转换。数据存储和分区由Block-Manager进行管理,每个数据块对应一个Block,即物理块。逻辑块在RDD中称为partition,其和Block一一对应。在运行Spark程序时,每个RDD都会通过前面提到的一系列Transformation操作,然后再通过Action进行触发。从逻辑上讲,每经过一次Transformation操作,都会有新的RDD产生,并且各RDD之间通过Lineage描述依赖关系,此关系在容错机制中发挥着重要作用。所有转换的输入和输出均是RDD。每个RDD在集群中以分区的方式进行存储,散布在不同的节点之上。一个Spark程序大体包括数据加载、运行转换和数据输出三个过程。在运行加载过程中,Spark将外部数据输入到Spark中,数据源可以是Scala的数据集,异或是HDFS数据。数据加载到Spark空间后,由BlockManager对这些数据块进行管理。在运行转换过程中,应用程序可以利用各种转换算子,对数据进行操作,这中间将产生一系列新的RDD,最后通过Action算子,触发Spark提交作业。在数据输出阶段,Spark可以将数据输出成一定的数据集格式,存储到HDFS或Scala数据集中。
万法归元,RDD是Spark最核心的东西,它表示已被分区,不可变的并能够被并行操作的数据集合,不同的数据集格式对应不同的RDD实现。RDD必须是可序列化的。RDD可以cache到内存中,每次对RDD数据集的操作之后的结果,都可以存放到内存中,下一个操作可以直接从内存中输入,省去了MapReduce大量的磁盘IO操作。这对于迭代运算比较常见的机器学习算法, 交互式数据挖掘来说,效率提升比较大。
Rdd作为spark的重要组成比分,具有更高效实现容错性,对于丢失部分数据分区只需根据它的lineage就可重新计算出来,而且,rdd能够实现批量操作,任务能够根据数据本地性 (data locality) 被分配,从而提高性能。如今,rdd凭借着其强大的功能和属性,除了才saprk 的实际应用中,扮演着更加重要的角色,也在大数据的实际应用中,扮演着更加重要的角色。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值