Spark复习四:SparkCore重点知识总结

1:RDD 是什么?
    RDD 即弹性分布式数据集(Resilient Distributed DataSet),它具备像MR等数据流模型的容错性,
能在并行计算中高效地进行数据共享进而提升计算性能。RDD中提供了一些转换操作,在转换过程中记录
“血缘”关系,但在RDD中并不会存储真正的数据,只是对数据和操作的描述。
    RDD 是只读的、分区记录的集合。RDD只能基本于稳定物理存储中的数据和其他已有的RDD执行确定性
操作来创建。这些确定的操作称为转换。如map,filter/groupby/join等。RDD含有如何从其他RDD衍生(即
计算)出来RDD的相关信息(即Lineage),据此可以从物理存储的数据计算出相应的RDD分区。

2:RDD的特性:
    5个特性:
        1:一系列的分区的信息(Patition)信息。
            每个分区都会被一个任务处理,这决定的并行度。用户可以在创建RDD时指定分区个数。
        2:由一个函数计算每一个分片。
            RDD的计算以分片为单位的,每个RDD都会实现compute函数以达到这个目的。
        3:RDD之间的依赖关系
            (如果一个分区数据丢失)
            RDD可以这种依赖关系重新计算丢失的数据,不需要从父RDD的所有分区数据进行计算。
        4:Patitioner是RDD中的分区函数,类似于Hadoop中的Partitioner,可以使得数据按照一定的
            规则分配到提定的Reducer上去处理。当前Spark中有两种类型的分区函数:一个基于hash
            的HashPartitioner,另一个是基于范围的RengePatitioner。
            普通数据的Partitioner为None,只有遇到RDD数据是key-value才会有Partitioner,比如:
            使用join和groupBy时。
        5:最佳位置列表
            按照“移动数据不如移动计算”的理念,Spark在进行任务调度时会尽可能地将计算任务分派
            到其所在处理数据块的存储位置。

3:RDD的三种创建方式
    1:由集合创建:
            val rdd=sc.parallelize(List(1,2,8,7,5))
            val rdd=sc.parallelize(List(1,2,3,9,5),4)
    2:加载文件生成RDD
        sc.textFile("文件路径(linux///home/data/hello.txt/  本地文件 or hdf文件":hdfs://hadoop:8020/spark/...)
    3:通过RDD的转换形成新的RDD
          map/flatMap
          wc=txtFile.map(x =>x.split(" "))
               
4:RDD的依赖关系
    窄依赖:
    一个RDD的分区至多被子RDD的某个分区使用一次
    容错:某个分区出故障了,可以快速将丢失的分区并行计算出来,窄依赖可以在单节点上完成运算。
           容错和计算速度都比宽依赖好。
    宽依赖:
        一个父RDD的分区会被子RDD的分区使用多次,即只能前面的算好后才进能进行后续的计算,只有遇到RDD数据是key-value才会有Partitioner
        等到父类的所有数据都被传输到各个节点后才能计算(MR-shuffle)
    容错:
        某个分区出故障了,要计算前面所有父分区,代价会很大。解决办法:把之前的结果存在磁盘,当分区
        出现故障,直接读磁盘文件。
        

    宽依赖对应shuffle,需要运行过程中将同一个父RDD的分区传入到不同的子RDD,中间可能涉及多个节点
    数据传输,而窄依赖的每个父RDD只会传入到一个子RDD,可以在一个分区内完成。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值