Spark Core:第四章 RDD

Spark Core:第四章 RDD



—>Spark知识点总结导航<—


一、RDD简介

  RDD Resillient Distrabuted Dataset( 弹性分布式数据集),是分布式内存一种抽象概念,提供了一种高度受限的共享内存模型(不存数据)

1. RDD是spark的核心

  spark数据集的表现形式

  • partition是RDD最小数据单元,多个partition组成一个RDD
    在这里插入图片描述在这里插入图片描述

2. RDD基本原理

 (1) 读入外部数据源进行创建(只读,不能修改)

 (2) 最后一个RDD经过“动作”操作进行转换,并输出到外部数据源

  • 操作:动作(Action)和转换(Transformation)优点:惰性调用、管道化、避免同步等待、不需要保存中间结果、每次操作变得简单
    在这里插入图片描述

3. RDD特性

 (1) 高效的容错性

   ① 容错机制:数据复制或记录日志

   ② 血缘关系、重新计算丢失分区、无需回滚系统、在不同节点间在重算过程中、记录粗粒度操作

 (2) 中间结果持久化到内存,数据在内存中的多个RDD操作之间进行传递,避免了不必要的读写磁盘开销

 (3) 存放的都是Java对象,避免了不必要的序列化和反序列化

4. RDD的宽窄依赖

 (1) 窄依赖

   ① 一个父RDD对应一个子RDD的分区

   ② 多个父RDD对应一个子RDD的分区

  实现流水线优化,可以实现管道化

 (2) 宽依赖(shuffle)

   一个父RDD的一个分区对应一个子RDD的多个分区

  包含shuffle过程(磁盘读写,效率低),无法实现流水线优化


二、RDD的创建

1. 从文件创建

 (1) 本地文件

	sc.textFile("/home/duck/software/spark/RELEASE")

 (2) HDFS

	sc.textFile("hdfs://Cloud:9000/RELEASE")

textFile转换算子,当我们执行上面语句的时候,没有真的去做读文件这个操作

2. 通过集合创建

		val arr=Array(1,2,3,4,5)
		sc.textFile(...,minNumpartition)
		sc.parallelize(arr)
		sc.makeRDD(arr)

3. 从其他RDD转化(转换算子)

4. 创建指定分区的RDD

		sc.textFile("hdfs://Cloud:9000/RELEASE",1)   这里的1就是分区数
		sc.parallelize(arr,1)

在这里插入图片描述

5. 键值对RDD

 (1) RDD里面每一个元素都是一个k-v对

 (2) reduceByKey就是只针对键值对的RDD才能用的操作


三、RDD五大特性

 1.RDD由一系列partition组成

 2.算子(函数)是作用在partition上的

 3.RDD之间有依赖关系

 4.分区器是作用在K,V格式的RDD上

 5.partition对外提供最佳的计算位置,利于数据处理的本地化


四、RDD的基本问题

1.K,V格式的RDD是什么?

  RDD中的元素是一个个的Tuple2(二元组)

2.sc.textFile(…)

  底层调用的是MR读取HDFS的方法,首先也会split,一个split对应一个block,这里的split 也对应一个partition.

3.RDD的分布式体现在哪里?

  RDD中的partition是分布在多个节点上的

4.RDD的弹性体现在哪里?

   (1) partition的个数可多可少

   (2) RDD之间有依赖关系

   (3) RDD中是不存数据的


五、RDD的操作算子

1. 转换操作算子Transformation

  通过转换算子来对RDD进行操作,懒执行,需要Action算子(行动算子)触发执行

  (1) map:把我们RDD中每个元素都执行map里的(function),形成一个新的RDD,原来的RDD中的元素,与新RDD中的元素一对一 RDD2=RDD1.map(x=>x+2) 等价于RDD2=RDD1.map(_

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值