spark初级入门

原文摘自http://www.donghongchao.cn

1、什么是RDD

  • RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数据抽象,它代表一个不可变、可分区、里面的元素可并行计算的集合.
    • Dataset:一个数据集,简单的理解为集合,用于存放数据的
    • Distributed:它的数据分布式存储,并且可以做分布式的计算
    • Resilient:弹性的
    • 它表示的是数据可以保存在磁盘,也可以保存在内存中

2、RDD的五大特性

    • A list of partitions
    • 每个RDD都有一个分区列表
    • A function for computing each split
    • 作用在每个分区上面的函数
    • A list of dependencies on other RDDs
    • 一个RDD依赖其他多个RDD,这个特性很重要,rdd的容错机制就是根据这个特性而来的
    • Optionally, a Partitioner for key-value RDDs (e.g. to say that the RDD is hash-partitioned)
      • 可选项:针对于 kv 键值对的RDD才具有该分区特性
    • Optionally, a list of preferred locations to compute each split on (e.g. block locations for
      an HDFS file)
      • 可选项 : 数据本地性,数据最优,选择尽量存储在worker节点上的数据节点。

3、创建rdd方式

  • 1、通过已经存在的集合

    • val rdd1=sc.parallelize(Array(1,2,3,4))
  • 2、读取外部数据源

    • val rdd2=sc.textFile(“文件”)
  • 3、由一个rdd转化成一个新的RDD
    • val rdd3=rdd2.flatMap

4、RDD的算子分类

  • transformation:转换操作,将一个rdd转换生成一个新的rdd(flatMap/map/reduceByKey),它属于懒加载,延迟执行,并不会立即触发任务的执行。
  • action :此时才会真正的触发任务的计算。

5、rdd中的2种依赖关系

  • 窄依赖:每个父RDD的partition最多只被子的rdd的一个partition
  • 宽依赖:子rdd的partition会依赖于父rdd的多个partiiton

6、lineage(血统)

  • 它会记录下当前作用在rdd上的分区数据(元数据)和一系列的转换行为,当子rdd中某个分区数据丢失之后,只需要通过血统来重新计算恢复当前丢失数据的分区(spark 具备容错机制)

7、RDD的缓存方式

  • cache:直接将rdd中的数据,保存在内存中,其本质是persist(StorageLevel.MEMOEY_ONLY)
  • persist:可以有丰富的缓存级别
  • 当rdd设置了缓存之后,如果下面有需要用到该RDD的数据的时候,就不要重复计算,可以直接从缓存中获取得到。

8、checkpoint

  • 会对数据进行一个持久化操作,保存在hdfs
  • 使用的时候:
    • 需要sc.setCheckpointdir 来设置一个检查点目录
    • 对需要缓存的rdd调用checkpoint
    • 注意:同样在执行数据缓存的时候,需要有对应的action算子操作,才会真正触发持久化操作。
  • 在做checkpoint操作的时候,此时会先执行对应触发action算子的rdd结果,计算完成之后又会开辟一个新的job来计算你设置了checkpoint的rdd的结果。
  • 在设置了checkpoint之后,对应这个rdd会改变之前的依赖关系,如果当前数据丢失了,只有重头计算得到。

  • 如何使用checkpoint

    • 可以对要做checkPoint的rdd,先进行一个cache
    • 在做一个checkpint操作
  • 数据恢复的一般顺序

    • 内存———->checkpoint————>重新计算得到
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值