Spark 核心API

1.SparkConf
    Spark配置对象,设置各种参数,使用kv类型。
2.SparkContext
    spark主要入口点,代表到spark集群的连接,可以创建
    rdd、累加器和广播变量。

    每个JVM中只能有一个SparkContext,启动新的SparkContext必须stop的原来的。 

    val rdd1 = sc.textFile()

3.RDD
    rdd有依赖列表.
    弹性分布式数据库,是spark的基本抽象,表示为不可变的、分区化的集合,可用于并行计算。
    该类包含基本操作,map、filter、persist。
    对于kv类型的rdd,方法封装在PairRDDFunction类中。
    轻量的集合,里面没有数据。

    内部有5大属性:
    1.分区列表
    2.计算每个切片的函数
    3.到其他RDD的依赖列表
    4.(可选)针对kv类型RDD的分区类
    5.(可选)计算每个的首选的位置列表。

RDD常见操作
------------------
    rdd都是延迟计算的,只有调用action方法时,才会触发job的提交。
    1.变换
        只要返回新的RDD就是transform。
        map
        filter
        flatMap
        mapPartitons                //对每个分区进行变换处理
        sample
        union
        distinct
        intersection
        groupByKey                    //没有combine过程,可以改变v类型
        reduceByKey                    //有combine过程,不能改变v类型
        join
    2.action
        2.1)collect
        2.2)foreachPartition        //迭代每个分区,

4.Dependency
    依赖,
    指的是子RDD的每个分区和父RDD的分区之间数量的对应关系。
    Dependency
        |
        |---NarrowDependency(窄依赖)
            |----OneToOne依赖(一对一依赖)
            |----Range依赖(范围依赖)
            |----Prune依赖(修剪依赖)

        |---ShuffleDependency(宽依赖)

4.Stage
    阶段是并行任务的集合,由调度器运行DAG图根据shuffle进行划分成若干stage。
    阶段分两种类型:ShuffleMapStage和ResultStage
    1.ShuffleMapStage
        该阶段的输出是下一个阶段的输入,跟踪每个节点的输出情况。
        一个阶段会重试执行多次处于容错考虑。
        由多个ShuffleMapTask构成。

    2.ResultStage
        在某些分区上应用计算函数,有些操作例如take(n)/first()没必要在所有分区上执行的。
        结果阶段的输出结果回传给driver.
        由多个ResultTask构成。

    
5.Task
    Spark执行的最小单位,有两种类型,和Stage相对。
    1.ShuffleMapTask
        
    2.ResultTask
        执行任务,并将结果回传给driver。

6.job
    每个action是一个job。

7.Application
    一个应用有多个job,对应一个SparkContext。

猜你喜欢

转载自blog.csdn.net/nengyu/article/details/92075964