• Spark权威指南读书笔记(一)


    Spark权威指南读书笔记(一)

    一、什么是Spark?

    1.Spark设计哲学

    • 统一平台
    • 计算引擎(不考虑数据存储)
    • 配套的软件库

    二、Spark应用程序

    spark应用程序由一个驱动器进程和一组执行器进程组成。

    驱动器进程

    负责运行main函数,主要负责三件事:

    1. 维护Spark应用程序的相关信息
    2. 回应用户的程序或输入
    3. 分析任务并分发给若干执行器进行处理

    驱动器是Spark应用程序的核心,其在整个生命周期中维护者所有相关信息。

    执行器进程

    负责执行驱动器分配的实际计算任务,主要负责两件事:

    1. 执行驱动器分配给他的代码
    2. 将执行器的计算状态报告给运行驱动器的结点

    总结:

    1. Spark使用一个集群管理器跟踪可用的资源
    2. 驱动器进程负责执行驱动器命令完成给定的任务

    三、转换操作

    什么叫转换

    Spark的核心数据结构在计算过程中是保持不变的,意味着创建后无法更改!!!若你需要做出改变,需告知Spark如何修改满足需求,这个过程称为转换。

    转换操作是使用Spark表达业务逻辑的核心,可分为两大类:指定窄依赖关系的转换操作和指定宽依赖关系的转换操作。

    窄依赖转换与宽依赖转换

    窄依赖转换是每个输入分区仅决定一个分区的转换。属于一对一映射关系。

    宽依赖转换是每个输入分区决定了多个输出分区,这一操作常被称为shuffle,其将在集群中执行相互交换分区数据的 功能。属于一对多映射关系。

    宽窄依赖潜度对比

    对于窄依赖转换,Spark将自动执行流水线处理,这意味着在DataFrame指定多个过滤操作,将全部在内存中执行。

    对于shuffle操作,即宽依赖转换,Spark会将结果写入磁盘。

    惰性评估

    惰性评估(lazy evaluation),即等到绝对需要才执行计算。具体而言,在Spark中,用户表达一些对数据的操作时,不是立即修改数据,而是建立一个作用到原始数据的转换计划。Spark首先会将计划编译为可在集群中高效执行的流水线式物理执行计划,然后等待,直到最后时刻才开始执行代码。因此,Spark可以优化了整个输入端到输出端的数据流。

    动作操作

    一个动作指示Spark在一系列转换操作后计算结果。

    动作主要分为三类:

    • 在控制台中查看数据的动作
    • 在某个语言中将数据汇集为原生对象的动作
    • 写入输出数据源的动作
  • 相关阅读:
    qs.stringify() 和JSON.stringify()的区别 飞鸟和蝉
    js随机数, 范围随机数 飞鸟和蝉
    VUECLI 4的跨域解决方案
    vue3elementadmin
    English dedicate 致力 题献
    解决java web项目导入后出现的问题 cannot be read or is not a valid ZIP file
    SQL 优化原则(转)
    Java Spring Error : Bean property '*****' is not writable or has an invalid setter method.
    c++面试题:#define MIN(A,B) ( (A) <= (B) ? (A) : (B) )
    freemark list 循环变量类型错误问题
  • 原文地址:https://www.cnblogs.com/ganshuoos/p/13388791.html
Copyright © 2020-2023  润新知