A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 小江哥 黑马粉丝团   /  2018-4-27 19:39  /  958 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

    Spark计算模型(一):最基本的数据抽象RDD
ApacheSpark是一个围绕速度、易用性和复杂分析构建的大数据处理框架,最初在2009年由加州大学伯克利分校的AMPLab开发,并于2010年成为Apache的开源项目之一,与Hadoop和Storm等其他大数据和MapReduce技术相比,Spark有如下优势:
      Spark提供了一个全面、统一的框架用于管理各种有着不同性质(文本数据、图表数据等)的数据集和数据源(批量数据或实时的流数据)的大数据处理的需求。
      官方资料介绍Spark可以将Hadoop集群中的应用在内存中的运行速度提升100倍,甚至能够将应用在磁盘上的运行速度提升10倍。
      弹性分布式数据集RDD.
RDD概述
1.什么是RDD
      RDD(Resilient Distributed Dataset)叫做弹性分布式数据集。是Spark中最基本的数据抽象,它代表一个不可变,可分区,里面的元素可并行计算的集合。
      Resilient:弹性的。意思是数据可以保存在磁盘或者内存中。
      Distributed:它的数据分布式存储,并且可以做分布式的计算。
      Dataset:一个数据集,简单的理解为集合,用于存放数据。
     
RDD的属性

a)    一组分片(Partition),即数据集的基本组成单位。
每个RDD都有一个分区列表。
b)    一个计算每个分区的函数。
作用在每个分区上面的函数。
c)    RDD之间的依赖关系。
一个RDD依赖其他多个RDD,RDD的容错机制就是根据这个特性。
d)    一个Partitioner,即RDD的分片函数。
此属性为可选项:针对与kv键值对的RDD才具有该分区特性。
e)    一个列表,存储存取每个Partition的优先位置(preferred location)。
此属性为可选项:数据本地性,选择金亮存储在worker节点上的数据节点。
2.  创建RDD的方式
a)    读取外部数据源
valrdd1 = sc.textFile(“文件”)
b)    通过已经存在的集合
                      val rdd2=sc.parallelize(Array(1,2,3,4));
c)    有一个RDD转化成一个新的RDD
Valrdd3 = rdd2.flatMap
3.  RDD的算子分类
a)    Transformation:转换操作,将一个rdd转换生成一个新的rdd,它属于懒加载,延迟执行,并不会立即触发任务的执行。
b)   Action:此时才会真正的触发任务的计算。
4.  RDD中的两种依赖关系
a)    窄依赖:每个父RDD的partition最多只被子的RDD的一个partition
b)    宽依赖:子rdd的partition会依赖于父RDD的多个partition
5.  Lineage(血统)
它会记录下当前作用在RDD上的分区数据(元数据)和一系列的转换行为,当子RDD中的某个分区数据丢失之后,只需要通过血统来重新计算回复当前丢失数据的分区(spark的容错机制)。



微信图片编辑_20180427193556.jpg (12.91 KB, 下载次数: 13)

微信图片编辑_20180427193556.jpg

1 个回复

倒序浏览
赞赞赞...........................
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马