SparkContext.scala实现了一个SparkContext的class和object,SparkContext类似Spark的入口,负责连接Spark集群,创建RDD,累积量和广播量等。

在Spark框架下该类在一个JVM中只加载一次。在加载类的阶段,SparkContext类中定义的属性,代码块,函数均被加载。

(1)class SparkContext(config:SparkConf) extends Logging with ExecutoAllocationClient,类SparkContext的默认构造参数为SparkConf类型,SparkContext继承了Logging,以及ExecutoAllocationClient trait,多个trait继承采用了with连接,trait没有任何类参数,trait调用的方法是动态绑定的。

(2)private val creationSite:CallSite=Utils.getCallSite()

val startTime=Syatem.currentTimeMillis()

1.未加private的变量:使用val声明的字段,只有公有的getter方法(getter和setter分别表示为creationSite=和creationSite_=),

而使用var声明的字段,getter和setter方法都是公有的。

2.加private的变量:相对于的val和var声明的getter或setter方法变成私有的方法

(3):private[spark] val stopped:AtomicBoolean=new AtomicBoolean(false)

private[class_name]指定可以访问该字段的类,class_name必须是当前定义的类,或当前定义的类的外部类,会生成getter和setter方法。private[this]:只有同一个对象中可见,类私有基础之上的对象私有

(4):private def assertNotStopped():Unit  --该方法为一个过程,因为返回值为Unit,同时为类的私有方法

(5):def this()=this (new SparkConf())主构造器   SparkContext类的构造器,默认参数为SparkConf类型的参数

def this(config:SparkConf,preferredNodeLocationData:Map[String,Set[SplitInfo]])的定义需要首先调用this(config)超方法

(6):private[spark] def this(master:String,appName:String)spark类的私有构造方法

(7) @volatile private var _dagScheduler:DAGScheduler=_

private var _applicationId:String=_

@volatile注释,通过编译器,被注释的变量将被多个线程使用,这些变量都将在类加载时被实例化

(8):在try{}catch{}代码块----其中的各种条件语句,属性的初始值,使用master创建taskSchedule等相应的参数

(9):private[spark] def withScope[U](body:=>U):U=RDDOperationScop.withScope[U](this)(body)

其中U代表类型,比如自定义的类或者scala固有的类,body指向operation,一段代码段,SparkContext类中多处使用该函数。

(10)):def newAPIHadoopFile[K, V, F <: NewInputFormat[K, V]](
    path: String,
    fClass:
Class[F],
    kClass: Class[K],
    vClass:
Class[V],
    conf: Configuration = hadoopConfiguration):
RDD[(K, V)])

函数声明说明:调用newAPIHadoopFile[LongWritable,Text,TextInputFormat]("hdfs://ip:port/path/to/file")

path:待读取的文件;conf:hadoop配置文件;fclass:InputFormat输入的数据格式;kClass:输入格式的key的类型;vClass:输入格式的value的类型

(11):def sequenceFile[K, V]
       (path: String,
minPartitions: Int =
defaultMinPartitions)
       (implicit km:
ClassTag[K], vm: ClassTag[V],
        kcf:
() => WritableConverter[K], vcf: () => WritableConverter[V]): RDD[(K,
V)])
该函数中有默认参数设定,以及一个隐式的转换,柯里化函数

(12):createTaskScheduler创建任务调度器

(13) :def stop() 关闭SparkContext;object SparkMasterRegex 用于模式匹配;类WritableFactory和object WritableFactory中包含了隐式工厂操作,implicit def
longWritableFactory:WritableFactory[Long] 隐式操作

RDD 抽象类abstract,extends Serializable with Logging
(1):final
标示的函数和属性均不可被覆写
(2):对于继承抽象类的子类对父类中的方法进行覆写时,需要加override标示
RDD抽象类被其他的RDD类,如HadoopRDD,继承,在子类中对父类的方法进行覆写,以适用于自身的各种RDD操作
排序,map,reduce操作等

Map是不可变集合,不可以增加减。

val person=Map("spark"->6,"Hadoop"->12)

这样定义是不可以增加减的

val person=scala.collection.mutable.Map("spark"->6,"Hadoop"->12)

这样可以增加元素,如:

person+=("file"->5)

也可以减元素,如:

person-=“file”

SparkContext和RDD的更多相关文章

  1. spark教程(四)-SparkContext 和 RDD 算子

    SparkContext SparkContext 是在 spark 库中定义的一个类,作为 spark 库的入口点: 它表示连接到 spark,在进行 spark 操作之前必须先创建一个 Spark ...

  2. Spark RDD持久化、广播变量和累加器

    Spark RDD持久化 RDD持久化工作原理 Spark非常重要的一个功能特性就是可以将RDD持久化在内存中.当对RDD执行持久化操作时,每个节点都会将自己操作的RDD的partition持久化到内 ...

  3. SparkCore | Rdd| 广播变量和累加器

    Spark中三大数据结构:RDD:  广播变量: 分布式只读共享变量: 累加器:分布式只写共享变量: 线程和进程之间 1.RDD中的函数传递 自己定义一些RDD的操作,那么此时需要主要的是,初始化工作 ...

  4. spark streaming之三 rdd,job的动态生成以及动态调度

    前面一篇讲到了,DAG静态模板的生成.那么spark streaming会在每一个batch时间一到,就会根据DAG所形成的逻辑以及物理依赖链(dependencies)动态生成RDD以及由这些RDD ...

  5. Spark LR逻辑回归中RDD转DF中VectorUDT设置

    System.setProperty("hadoop.home.dir", "C:\\hadoop-2.7.2"); val spark = SparkSess ...

  6. rdd 基本操作

    package com.jason.example import org.apache.spark.rdd.RDD class RddTest extends SparkInstance { val ...

  7. spark 笔记 6: RDD

    了解RDD之前,必读UCB的论文,个人认为这是最好的资料,没有之一. http://www.cs.berkeley.edu/~matei/papers/2012/nsdi_spark.pdf A Re ...

  8. Spark RDD中Runtime流程解析

    一.Runtime架构图 (1)从Spark  Runtime的角度讲,包括五大核心对象:Master.Worker.Executor.Driver.CoarseGrainedExecutorBack ...

  9. 大数据学习day19-----spark02-------0 零碎知识点(分区,分区和分区器的区别) 1. RDD的使用(RDD的概念,特点,创建rdd的方式以及常见rdd的算子) 2.Spark中的一些重要概念

    0. 零碎概念 (1) 这个有点疑惑,有可能是错误的. (2) 此处就算地址写错了也不会报错,因为此操作只是读取数据的操作(元数据),表示从此地址读取数据但并没有进行读取数据的操作 (3)分区(有时间 ...

随机推荐

  1. android 实现2张图片层叠效果

    如图: 代码: <RelativeLayout android:layout_width="match_parent" android:layout_height=" ...

  2. GB28181国检推流

    GB28181国检有一向内容是实时播放摄像机流,经过一番努力,搞定这个功能,现分享心得: 首先需要了解流程,说简答点就是视频流从哪里来到什么地方去,下图描述了视频流推流,转发的 基本过程:信令交互成功 ...

  3. 显示器VGA视频数据线的问题

    一朋友原来有一套PC电脑,后来买了一台新的显示器,新的显示器分辨率为1920X1080,主机接到新的显示器上,分辨率始终无法上到1920X1080,原主机的显示卡驱动已经是最新,还是不行,又重新安装操 ...

  4. 利用checkbox的到值,并且存到数据库修改的话要显示之前选择的

    在前台当然是利用checkbox来得到复选框的语言:{% for language in languages%}<input type="checkbox" name=&qu ...

  5. 02.JSP的3个编译指令

    本章介绍JSP的3个编译指令,在JSP中常见的编译指令有如下3个:         1.page:用于针对当前页面的指令.         2.include:用于指定包含另一个页面.         ...

  6. 2014 ACM/ICPC Asia Regional Anshan Online

    默默的签到 Osu! http://acm.hdu.edu.cn/showproblem.php?pid=5003 #include<cstdio> #include<algorit ...

  7. Ubuntu下配置Docbook环境

    1.准备环境 $sudo apt-get install xsltproc $sudo apt-get install docbook-xsl $sudo apt-get install docboo ...

  8. 使用 Microsoft Word 发布博客文章

    以 Microsoft Word 2010 为例: 依次选择:文件 -> 保存并发送 -> 发布为博客文章 配置说明:新建账户 的 博客文章 URL  一栏填写 http://rpc.cn ...

  9. dedecms还原数据时要选对备份目录 不然会提示function文件出错

    小李子最近在学习dedecms,在网上下载了一个二次开发的系统,顺利安装后想要还原一下作者的备份数据,可一直没有成功,让ytkah查看一下什么情况.进到后台,点击还原,提示/e/class/funct ...

  10. 整数划分 Integer Partition(二)

    本文是整数划分的第二节,主要介绍整数划分的一些性质. 一 先来弥补一下上一篇文章的遗留问题:要求我们所取的 (n=m1+m2+...+mi )中  m1 m2 ... mi连续,比如5=1+4就不符合 ...