理论教育 Spark源码中的模式匹配实例分析

Spark源码中的模式匹配实例分析

时间:2023-11-24 理论教育 版权反馈
【摘要】:模式匹配在Spark源码中可谓无处不在,下面给出几个代码片段说明Scala模式匹配在Spark源码中的使用情况。SparkContext创建时会创建TaskSheduler及DAGScheduler,其中TaskSheduler通过方法createTaskScheduler进行创建,代码如下:类型模式下面给出的代码为SparkContext中的requestTotalExecutors方法,其作用是向集群请求对应数量的Executor。元组模式下面给出的代码来源于SparkSubmit,SparkSubmit为Spark应用程序提交执行的入口,在SparkSubmit类中有一个prepareSubmitEnvironment方法,用于在程序提交之前,检测并准备相应的环境信息,给出的代码作用是匹配不支持的资源管理器类型及部署模式。

Spark源码中的模式匹配实例分析

模式匹配在Spark源码中可谓无处不在,下面给出几个代码片段说明Scala模式匹配在Spark源码中的使用情况。

(1)常量模式、变量模式、正则表达式模式及变量绑定模式匹配

SparkContext(org.apache.spark.SparkContext.scala)是Spark的入口,它负责与整个Spark集群进行交互,包括创建RDD,任务调试、管理accumulators和广播变量等。Spark⁃Context创建时会创建TaskSheduler及DAGScheduler,其中TaskSheduler通过方法createTask⁃Scheduler进行创建,代码如下:

(2)类型模式

下面给出的代码为SparkContext中的requestTotalExecutors方法,其作用是向集群请求对应数量的Executor。(www.daowen.com)

(3)元组模式

下面给出的代码来源于SparkSubmit(org.apache.spark.deploy.SparkSubmit.scala),SparkSubmit为Spark应用程序提交执行的入口,在SparkSubmit类中有一个prepareSubmitEn⁃vironment方法,用于在程序提交之前,检测并准备相应的环境信息,给出的代码作用是匹配不支持的资源管理器类型及部署模式。

(4)构造器模式

给出的代码来源是org.apache.spark.scheduler.cluster.CoarseGrainedSchedulerBackend.scala。CoarseGrainedSchedulerBackend是一个基于Akka实现的粗粒度资源调度类,用于在Spark任务运行期间,监听并持有注册给它的Executor资源,在接受Executor注册、状态更新、响应Scheduler请求等时,利用现有Executor资源发起任务调度流程。CoarseGrainedSchedulerBackend类中有个receiveAndReply方法,用于接收Executor注册、停止运行、删除等请求,具体如下:

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈