当前位置 博文首页 > Shockang的博客:SparkContext是什么?有什么作用?

    Shockang的博客:SparkContext是什么?有什么作用?

    作者:[db:作者] 时间:2021-08-24 09:56

    前言

    本文隶属于专栏《1000个问题搞定大数据技术体系》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!

    本专栏目录结构和参考文献请见1000个问题搞定大数据技术体系

    正文

    SparkContext 是什么?

    SparkContext 是通往 Spark 集群的唯一入口,可以用来在 Spark 集群中创建 RDDs 、累加和广播变量( BroadcastVariables )。

    Spark 也是整个 Spark 应用程序( Application )中至关重要的一个对象,可以说是整个 Application 运行调度的核心(不是指资源调度)。

    SparkContext 的作用是什么?

    SparkContext 的核心作用是初始化 Spark 应用程序运行所需要的核心组件,包括高层调度器( DAGScheduler )、底层调度器( TaskScheduler )和调度器的通信终端( SchedulerBackend ),同时还会负责 Spark 程序向 Master 注册程序等。

    只可以有一个 SparkContext 实例运行在一个 JWM 内存中,所以在创建新的 SparkContext 实例前,必须调用 stop 方法停止当前 JVM 唯一运行的 SparkContext 实例。

    SparkContext 的重要性体现在哪些方面?

    Spark 程序在运行时分为 Driver 和 Executor 两部分, Spark 程序编写是基于 SparkContext 的,具体包含。

    • Spark 编程的核心基础 RDD 是由 SparkContext 最初创建的(第一个 RDD 一定是由 SparkContext 创建的)
    • Spark 程序的调度优化也是基于 SparkContext ,首先进行调度优化。
    • Spark 程序的注册是通过 SparkContext 实例化时生产的对象来完成的(其实是 SchedulerBackend 来注册程序)。
    • Spark 程序在运行时要通过 ClusterManager 获取具体的计算资源,计算资源获取也是通过 SparkContext 产生的对象来申请的(其实是 SchedulerBackend 来获取计算资源的)。
    • SparkContext 崩溃或者结束的时候,整个 Spark 程序也结束。

    SparkContext 源码类注释 (3.2.0-SNAPSHOT)

    /**
     * Spark功能的主要入口点。
     * SparkContext表示与Spark集群的连接,可用于在该集群上创建RDD、累加器和广播变量。
     *
     * @note 每个JVM只能有一个SparkContext处于活动状态。在创建新的SparkContext之前,必须 stop() 活跃的SparkContext。
     *
     * @param config 描述应用程序配置的 Spark Config 对象。此配置中的任何设置会覆盖默认配置和系统属性。
     */
    class SparkContext(config: SparkConf) extends Logging
    
    cs