spark与mapreduce的区别
spark是通过借鉴Hadoop mapreduce发展⽽来,继承了其分布式并⾏计算的优点,并改进了mapreduce明显的缺陷,具体表现在以下⼏⽅⾯:
1.spark把中间计算结果存放在内存中,减少迭代过程中的数据落地,能够实现数据⾼效共享,迭代运算效率
⾼。mapreduce中的计算中间结果是保存在磁盘上的,这样必然影响整体运⾏速度。
2.spark容错性⾼。spark⽀持DAG图的分布式并⾏计算(简单介绍以下spark DAG:即有向⽆环图,描述了任务间的先后依赖关系,spark中rdd经过若⼲次transform操作,由于transform操作是lazy的,因此,当rdd进⾏action操作时,rdd间的转换关系也会被提交上去,得到rdd内部的依赖关系,进⽽根据依赖,划分出不同的stage。),它引进rdd弹性分布式数据集的概念,它是分布在⼀组节点中的只读对象集合,如果数据集⼀部分数据丢失,则可以根据⾎统来对它们进⾏重建;另外在RDD计算时可以通过checkpoint来实现容
错,checkpoint有两种⽅式,即checkpiont data 和logging the updates。
3.spark更加通⽤。hadoop只提供了map和reduce两种操作,spark提供的操作类型有很多,⼤致分为转
hadoop与spark的区别与联系换和⾏动操作两⼤类。转换操作包括:map,filter,flatmap,sample,groupbykey,reducebykey,union,join,cogroup,mapvalues,sort,partitionby等多种操作,⾏动操作包括:collect,reduce,lookup和save等操作
这⾥要注意:spark 操作实际分为四类:
a.创建操作:⽤于创建RDD。RDD创建只有两种⽅法,⼀种是读取外部⽂件和内存集合,另⼀种是通过transform转换操作⽣成。
b.转换操作:将RDD通过⼀定的操作转换成新的RDD。RDD的转换操作是惰性操作,它只是定义了⼀个新的RDD,并没有⽴即执⾏。
c.控制操作:进⾏RDD持久化,科技将RDD按不同的存储策略保存在磁盘或内存中,⽐如cache接⼝默认将RDD缓存在内存中。
d.⾏动操作:能够触发spark运⾏的操作,举个栗⼦,对RDD进⾏COLLECT就是⾏动操作。spark中的⾏动操作分为两类,⼀类的操作结果是变成scala集合或变量,另⼀类是将RDD保存到外部⽂件系统或数据库中。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论