spark简明扼要之RDD理解

RDD是什么

A Resilient Distributed Dataset,即弹性分布式数据集
是Spark中最基本的数据抽象,
说它弹性,是因为这个数据集是不可变的,
              能够手动或自动进行内存和磁盘数据存储的切换
              能够基于Lineage的高效容错
说它分布式,是因为它的数据是分区存放在各个节点之上,
               并可进行并行计算。

RDD有什么特性

共有5大特性

 1. A list of partitions:一组分片
 在rdd创建的时候,可手动和自动切分地切分分片,分片决定了task并行的数量,基本是one task per partition

 2. A function for computing each split:一个计算分区的函数
 3. A list of dependencies on other RDDs:即RDDLineage
第n个RDD挂了后,可以通过n-1个rdd进行容错复原。

 4. Optionally, a Partitioner for key-value RDDs:即PairRDD,通过hash实现

 5. Optionally, a list of preferred locations to compute each split on
 即数据本地化计算,尽可能保证 计算函数 和 数据分区 在同一个node上,从而达到数据本地化计算。

RDD存储的是什么

RDD虽说是一个数据集,但实际存储的并不是数据,而是:数据的类型,分区的地址,数据的获取方法等描述数据的数据。

ps:传统软件开发领域是程序不动数据动,然,大数据领域的原则是数据不动程序动。

RDD如何创建

 1. 初始化运行上下文环境
SparkConf conf = new SparkConf().setAppName(appName).setMaster(master);
JavaSparkContext sc = new JavaSparkContext(conf);
 2. 创建RDD
 2.1. 通过list创建
List<Integer> data = Arrays.asList(1, 2, 3, 4, 5);
JavaRDD<Integer> distData = sc.parallelize(data);
 2.2. 通过外部数据集创建
 JavaRDD<String> distFile = sc.textFile("data.txt");

RDD的操作:Transformation,shuffle,action

 1. Transformation:转换-->从a状态变成b状态,并不真正执行,只是记录操作步骤
 2. shuffle:洗牌-->把所有分区数据进行按照某种要求进行打散,从而组成新分区,如下图所示。
 3. action:动作-->真正触发计算

这里写图片描述

RDD之持久化

这里写图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值