Spark总结(一)

1、RDD是什么?有什么特性?有哪些优势?
RDD:全称为弹性分布式数据集(Resilient Distributed Datasets),是一个只读的、容错的、并行的数据结构。

2、Driver、ClusterManager、Worker、Executor。
Driver:负责提交Job任务。
ClusterManager:Spark的资源管理器。可以是Standalone、yarn……

3、Spark的宽依赖(Wide dependency)和窄依赖(Narrow Dependency)
RDD可以相互依赖。如果RDD的每个分区最多只能被一个Child RDD的一个分区使用,则称之为narrow dependency;若多个Child RDD分区都可以依赖,则称之为wide dependency。不同的操作依据其特性,可能会产生不同的依赖。例如map操作会产生narrow dependency,而join操作则产生wide dependency。Narrow dependency支持在同一个节点上以管道形式执行多条命令。而Wide dependency则需要所有依赖的分区都是可用的,中间可能会有shuffle过程。 一个任务遇到宽依赖(Wide dependency)则划分为不同的State。

4、Spark运行是线程级别的,Hadoop运行是进程级别的。

5、Spark中task的类别:ShuffleTask和ResultTask。shuffleTask会将结果保存在executor所在节点上。

6、为什么Spark适合于迭代式计算?
Spark是基于RDD的,本身RDD又是基于内存的。RDD只能由外部读取或者从另外的RDD转化而生成。如果是迭代式的计算,对于hadoop的Mapreduce来说,必须把中间结果写到hdfs,然后再由下一步计算读取,中间涉及到读写磁盘的操作,所以耗时较长。Spark的一个计算过程产生的是RDD,下一步计算如果需要上一步的数据,只需要直接读取内存中的RDD即可,时间较短。

7、传统容错和RDD容错机制。
传统的两种容错方式:记录数据更新记录和网络和硬盘容错。
RDD容错机制:因为RDD是基于依赖关系,当父依赖出现问题的时候,可以通过重新计算父依赖来解决出错的问题。

8、Spark的RDD是分布式内存的抽象,且能够基于位置感知性调度、自动容错、负载均衡和高度的可扩展性,Spark中允许用户在执行多个查询时显式的将工作集缓存起来以供后续查询重用,这极大的提高了查询的速度。

9、RDD是分区的,每个分区会被一个计算任务处理,并决定并行计算的粒度;RDD的Transformation操作会产生新的RDD,产生RDD时可以指定分区数,如果不指定分区数,则默认为程序所分配到的CPU核数,如果是从hdfs中产生的RDD,则分区数默认为文件的Block数。

10、Transformation和Action操作。
(一)Transformation
map(func) 返回一个新的分布式数据集,由每个原元素经过函数处理后的新元素组成
filter(func) 返回一个新的数据集,经过fun函数处理后返回值为true的原元素组成
flatMap(func) 类似于map,但每个输入元素会被映射为0个或多个输出元素
mapPartitions(func) 类似于map,对RDD的每个分区起作用
intersection(otherDataset) 求两个RDD的交集
distinct([numTasks]) 返回一个包含源数据集中所有不重复元素的新数据集
groupByKey([numTasks]) 在一个由(K,V)对组成的数据集上调用,返回一个(K,Seq[v])对组成的数据集。
reduceByKey(func,[numTasks]) 在一个(K,V)对组成的数据集上调用,返回一个(K,V)对的数据集
sortByKey([ascending],[numTasks]) 在类型为(K,V)的数据集上调用,返回以K为键进行排序的(K,V)对数据集。

(二)Action操作
reduce(func) 通过函数func聚集结果集中的所有元素
collect() 在Driver的程序中,以数组的形式返回数据集中的所有数据。
count() 返回元素的个数
foreach(func) 在数据集的每一个元素上,运行函数func,通常用于更新一个累加器变量,或者和外部存储系统进行交互。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值