SparK总结

一 弹性分布式数据集(RDD)

1 RDD
存放数据的集合,数据是分布式存储的,可以保存在内存或磁盘中。是spark中最基本的数据抽象)

2 RDD五大属性

  1. 分区列表
  2. 作用于分区中得到函数
  3. RDD之前的依赖关系:每次一个RDD通过函数操作会生成新的RDD(spark容错机制的依据:会根据依赖关系进行数据恢复)
  4. 分区函数 * 只有k-v类型的RDD 才有分区函数(必须产生shuffle)
  5. 一个列表,存储每个Partition的最优位置

3 为什么会产生RDD
解决了mapReduce 不能循环式的数据流模型。可以把RDD的结果数据进行缓存,方便多次重用可迭代计算,避免重复计算。提示IO操作。

4 RDD是Spark中的底层核心,Spark是这个抽象方法的实现。 迭代运算 和 交互式

5 创建RDD
(1)通过sparkContext调用parallelize方法,需要一个已经存在的Scala集合创建
val rdd1 = sc.parallelize(集合/数组)
(2)由外部存储系统的文件创建
val rdd2=sc.textFile(“xxx”)
(3)已有的RDD经过算子转换生成新的RDD
val rdd3=rdd2.flatMap(_.split(" "))

6 RDD算子:Transformation和Action
处理RDD数据的函数方法

Transformation算子:属于延迟计算,当一个RDD转换成另一个RDD时并不立即进行转换,而是记住了数据集的逻辑操作。

Action算子:触发Spark作业的运行,真正触发转换算子的计算

Transformation 常见算子:
map、filter、flatMap、mapPartitions(这四个面试常问到)、mapPartitionsWithIndex、union(并集)、intersection(交集)、distinct(去重)、groupByKey、reduceByKey(聚合)、sortBy、sortByKey、join(相同key提取,v依次排在后面)、cogroup、coalesce、repartition、repartitionAndSortWithKey
mapParitions和map的区别 :一个只作用于分区,一个作用于每个元素 ???

Action 常见算子:
reduce、collect、count、first、take、takeOrdered、saveAsTextFile、saveAsObjectFile、countByKey、foreach、foreachPartition

7 宽依赖与窄依赖
宽依赖:父RDD的分区被子RDD的多个分区使用 例如 groupByKey、reduceByKey、sortByKey等操作会产生宽依赖,会产生shuffle
窄依赖:父RDD的每个分区都只被子RDD的一个分区使用 例如map、filter、union等操作会产生窄依赖

Lineage(血统)
记录RDD的元数据信息和转换行为。如果当前RDD的某些分区数据丢失后,可以通过血统来恢复丢失的分区。血统应该存在Application里面

RDD的缓存

把rdd1的数据进行缓存,以便之后对其能快速读取。

8 RDD的缓存方式

persist方法: 可以设置丰富的存储级别。 如:设置 序列化、内存、磁盘、几份 等

cache方法: 默认保存在内存中,本质调用的是persist的默认方法 即保存在内存中。

对需要进行缓存的RDD调用persist和cache,不会立即执行,而是有action算子时候才真正执行缓存操作。

spark有自带的机制,如果数据量太小,没有强制设置缓存在内存 而是正常设置缓存在磁盘 但是依然会存在内存的。

9 DAG
简介:原始的RDD通过一系列的转换就形成了DAG

为什么要划分Stage:就是让每一个Stage中的多任务可以并行的运行,互不干扰,划分给对应的task执行。

划分Stage流程:
1、从最后一个rdd开始往前推,首先把当前rdd加入到一个stage中,这个stage就是最后一个stage
2、如果遇到窄依赖,就把当前rdd加入本stage中,如果遇到宽依赖,就从宽依赖切开,这样最后一个stage就已

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值