spark源码action系列-开头部分
来源:互联网 发布:js date 设置日期 编辑:程序博客网 时间:2024/06/06 01:47
Spark任务的具体的启动通过rdd中的action来执行SparkContext中的runJob来对任务进行启动,一个action的动作就会生成一个job.如果rdd中没有现成可用的action来执行业务想要的操作时,可以直接使用这个runJob来进行自定义操作.
SparkContext中的runJob的定义:
def runJob[T, U: ClassTag](
rdd: RDD[T],
processPartition: Iterator[T] => U,
resultHandler: (Int, U) => Unit)
函数定义说明:
在函数定义的ClassTag的类型部分:T表示RDD中数据的类型,U表示这个JOB的返回数据类型
Rdd参数是表示要执行这个JOB的最后一个RDD的实例.
processPartition:这是一个用于在每个partition中执行数据集操作的函数,这个函数传入一个Iterator,返回的是一个U的类型的,这个返回的就是这个任务对应此task的返回值.
示例:(iter:Iterator[T]) => {
Val kv = iter.next
If kv._1 == 1
Return kv
}
resultHandler:这是对每个task(partition)的执行结果进行合并的操作函数,这个函数得到每个task的返回(在driver端),并根据结果进行相应的操作.这个函数传入参数为2个,第一个参数是task对应的partition的下标,第二个参数是这个partition的返回值.
示例:
Val results = new Array[U](rdd.partitions.length)
(index,result) => {
Results(index) = result
}
driver端的接收task结果的简单说明
在Driver端接收task的执行结果,根据action的不同,处理接收的内容可能也会不同,
下面根据不同的action来针对性分析driver如何接收数据.
Driver端接收到ResultTask的响应结果的数据主要是通过TASK中执行的最后一个RDD的function来决定的.所以不同的action,结果的响应到driver端也就会不相同.
在driver端,TaskResultGetter的实例中得到各个executor的结果的线程数通过spark.resultGetter.threads配置.默认为4个.
在TaskSchedulerImpl中根据生成的TaskResultGetter实例中的enqueueSuccessfulTask函数来进行处理.这个函数包含有两个重载,一个包含有TaskState的表示这是task执行失败时的调用.
- spark源码action系列-开头部分
- spark源码action系列-collect
- spark源码action系列-count
- spark源码action系列-take
- spark源码action系列-reduce
- spark源码action系列-saveAsHadoopDataset
- spark源码action系列-foreach与foreachPartition
- rocketmq源码解析系列-开头
- Apache Spark源码走读系列
- spark源码系列文章目录
- Spark之 源码解读系列
- Spark---Spark开头的杂项
- Spark SQL 源码分析系列文章
- Spark源码系列(二)RDD详解
- Spark SQL 源码分析系列文章
- Spark源码系列(二)RDD详解
- Spark源码系列(五)分布式缓存
- Spark源码系列(二)RDD详解
- 变量的本质
- Linux/AIX系统下服务自启动配置
- Qt Creator的配置
- 瀑布式文章系统
- winform使用委托和事件完成两个窗体之间的通信实例
- spark源码action系列-开头部分
- 如何使用 HTTP 响应头字段来提高 Web 安全性?
- Apache Shiro 使用手册(五)Shiro 配置说明
- error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项: 值“0”不匹配值“2”
- HDU 4602 Partition 组成n的方案中k有几个 (好题!!!!找规律题+快速幂)
- 一人一条最新
- Android Activity活动生命周期
- 如何在移动设备上调试html5开发的网页
- Facebook创始人的老婆不够美? 扎克伯格:我自己来回答为何娶丑妻(从此你是我偶像)