本文介绍: 相比较mapreduce框架spark框架执行效率更加高效。mapreduce执行框架示意图。spark执行框架示意图spark的执行中间结果存储内存当中的,而hdfs的执行中间结果是存储hdfs中的。所以在运算时候spark的执行效率是reduce的3-5倍。

一:为什么学习spark

比较mapreduce框架spark框架执行效率更加高效。
mapreduce的执行框架示意图。
在这里插入图片描述
spark执行框架示意图
在这里插入图片描述
spark的执行中间结果是存储内存当中的,而hdfs的执行中间结果是存储hdfs中的。所以在运算时候spark的执行效率是reduce的3-5倍。

二:spark什么

spark一个执行引擎

三:spark包含哪些内容

1. spark core

spark RDD五大特性

1. RDD是由一系列partition组成的。

每个rdd中,partition个数和由hdfs中的map的个数决定的。和map的个数保持一致。

2. 每个RDD会提供最佳的计算位置

3. 每个函数作用在每个partition上。

算子
  1. 转换算子
    常见 Transformation 类算子
    filter过滤符合条件记录数, true 保留, false 过滤掉。
    map :将一个 RDD 中的每个数据项,通过 map 中的函数映射变为一个新的元素。特点:输入
    一条输出一条数据
    flatMap :先 map 后 flat 。与 map 类似,每个输入可以映射为0到多个输出项。
    sample 随机抽样算子,根据传进去的小数按比例进行有放回或者无放回的抽样。
    reduceByKey 将相同的 Key 根据相应的逻辑进行处理
    sortByKey / sortBy 作用在 K,V格式的RDD 上,对 key 进行升序或者降序排序
  2. 行动算子
    count返回数据集中的元素数。会在结果计算完成后回收到 Driver 端。
    take(n) :返回一个包数据集前 n 个元素集合
    first效果等同于 take(1) ,返回数据集中的第一个元素
    foreach循环遍历数据集中的每个元素运行相应的逻辑
    collect :将计算结果回收到 Driver
  3. 持久算子
    cache默认将 RDD 的数据持久化到内存中。 cache 是懒执行。
    checkpointcheckpoint 将 RDD 持久化到磁盘,还可以切断 RDD 之间的依赖关系,也是懒执行。

4. RDD之间相互依赖

RDD的宽窄依赖
一对一的就是窄依赖。
一对多的就是宽依赖。
在计算进行切割时候,会将所有的窄依赖放在一起,成为一个stage。放在一个TaskScheduler中进行计算。
在这里插入图片描述

5. 分区器是作用在 (K,V) 格式的 RDD 上。

shuffle
HashShuffle
在这里插入图片描述

SortShuffle
在这里插入图片描述
在这里插入图片描述
bypass机制

shuffle map task的数量小于spark.shuffle.sort.bypassMergeThreshold参数的值(默认200)或者不是聚合类的shuffle算子比如groupByKey)

在这里插入图片描述
Shuffle文件寻址
在这里插入图片描述

2. spark的俩种提交模式

用于测试
在这里插入图片描述
用于生产
在这里插入图片描述

在这里插入图片描述

2. spark sql

  1. RDD和dataFromesdataset
    dataset包含dataFormesdataFormes包含RDD。
  2. Spark on hivehive on spark
    Spark on hive 中,hive是存储,spark负责sql优化解析
    hive on Spark中,Hive即作为存储负责sql的解析优化,Spark负责执行。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注