spark源码一参数初始化和context组成

博客介绍了Spark任务启动时获取参数的方式,包括源自系统参数、使用sparkConf相关API设置以及从别的SparkConf克隆。还对SparkContext进行了介绍,涉及SparkEnv、SparkStatusTracker、TaskScheduler、DAGScheduler等部分,以及sparkUI界面。

前言 spark任务启动时获取参数方式

在启动spark程序时先要进行参数配置,也就是通过new SparkConf()来设置spark程序所需的参数,底层数据结构是 key-value pairs

 private val settings = new ConcurrentHashMap[String, String]()

spark获取参数方式有三种:
1、源自于系统参数 以spark.参数开头的属性,

  if (loadDefaults) {
    loadFromSystemProperties(false)
  }

  private[spark] def loadFromSystemProperties(silent: Boolean): SparkConf = {
    // Load any spark.* system properties
    for ((key, value) <- Utils.getSystemProperties if key.startsWith("spark.")) {
      set(key, value, silent)
    }
    this
  }

2、使用sparkConf相关API设置的那部分

  /** Set a configuration variable. */
  def set(key: String, value: String): SparkConf = {
    set(key, value, false)
  }

3、从别的SparkConf克隆过来

 /** Copy this object */
  override def clone: SparkConf = {
    val cloned = new SparkConf(false)
    settings.entrySet().asScala.foreach { e =>
      cloned.set(e.getKey(), e.getValue(), true)
    }
    cloned
  }

sparkContext介绍

每个driver都包含一个sc对象,spark driver端初始化围绕着 SparkContext初始化,因此需要了解sparkContext包含哪些部分:

  1. SparkEnv : spark运行时环境
  2. SparkStatusTracker:job stage的监控信息
  3. TaskScheduler:作业调度器
  4. DAGScheduler:DAG,负责创建job,将dag中的RDD划分到不同的stage、提交stage等,
  5. sparkUI界面
  6. ...
### 配置 IntelliJ IDEA 的 Spark Scala 开发环境 #### 、安装配置基础插件 为了支持 Scala 项目的开发,首先需要确保 IntelliJ IDEA 中已经安装了必要的插件。具体操作如下: 1. 打开 IntelliJ IDEA 后,进入 `File -> Settings -> Plugins` 页面。 2. 在插件市场中搜索 “Scala”,找到官方提供的 Scala 插件并完成安装[^1]。 #### 二、设置 JDK Scala SDK 在创建项目之前,必须先配置好 JDK Scala SDK,这是运行 Scala 程序的基础依赖。 1. 进入 `File -> Project Structure` 菜单。 2. 在左侧导航栏选择 `SDKs`,点击右侧的加号按钮 (`+`) 并添加本地已安装的 JDK 版本(需提前确认系统上已正确安装 Java 环境)。 3. 继续在同页面下,通过 `Add...` 功能引入 Scala SDK。如果尚未安装 Scala,则可以选择手动指定路径或将它复制到项目的库中。 #### 三、新建 Scala 项目 当基本环境准备就绪后,就可以按照以下流程来初始化个新的 Spark 应用程序: 1. 使用菜单选项 `File -> New -> Project` 创建新工程,在弹窗里挑选语言类型为 **Scala**。 2. 设置对应的 **Project SDK** **Scala SDK** 参数值分别为先前定义好的 JDK 及 Scala 版本位置[^2]。 #### 四、集成 Apache Spark 到项目中 为了让项目能够调用 Spark API 实现大数据处理功能,还需要进步把 Spark 相关组件加入进来。以下是两种常见的方法: ##### 方法 A: 基于 Maven 构建工具管理依赖关系 对于采用 Maven 来构建的应用来说,只需编辑 pom.xml 文件即可自动拉取所需资源包。例如下面这段 XML 就声明了个典型的 Spark Core 依赖项: ```xml <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-core_2.11</artifactId> <version>2.1.0</version> </dependency> ``` ##### 方法 B: 手动加载 JAR 包 如果不希望通过自动化方式获取外部库的话,也可以直接将 Spark 发行版里的核心 jar 文件拖拽至 IDE 内部作为全局可用类库的部分。比如定位到 `/home/tom/spark-1.6.0/lib/` 下面寻找名为 `spark-assembly*.jar` 的压缩文档,并依照提示将其注册成为当前工作区内的附加模块之。 #### 五、验证测试代码能否正常编译执行 最后步就是尝试编写小段简单的 HelloWorld 类型样例去检验整个搭建过程是否顺利完成。这里给出段示范性的 Scala 源码供参考: ```scala import org.apache.spark.SparkContext import org.apache.spark.SparkConf object SimpleApp { def main(args: Array[String]) { val conf = new SparkConf().setAppName("Simple Application").setMaster("local[*]") val sc = new SparkContext(conf) println(sc.parallelize(List(1, 2, 3)).count()) // 输出结果应为 '3' } } ``` 上述例子展示了如何快速启动个 Local Mode 的 Spark Context 对象实例以及对其集合数据结构进行初步探索的操作步骤[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值