Spark里面提供了一个比较重要的抽象——弹性分布式数据集(resilient distributed dataset),简称RDD。弹性:数据可大可小,可分布在内存或磁盘,当某台机器宕机时,能够按照RDD的liveage重新计算,从而恢复。

RDD有5个特性:

1.一个分区列表,用于并行计算,每个分区对应一个原子数据集,作为这个分区的数据输入

2.计算这个RDD某个分区数据(这个分区数据是由父RDD对应分区计算出来的)函数

3.一个依赖列表,这个rdd依赖的父rdd是哪些(在计算的时候可以通过这个依赖来容错)

4.这个rdd的分区元素数据信息,其实就是该RDD怎么分区的,比如某个RDD是通过hash partition得到的

5.分区数据的存储地址,用来实现计算任务的本地性,即把计算放在由相关数据的机器上执行。

6.spark的计算是“流式”计算,如,有可能一个block的数据量很大,一次性读出来肯定很占内存,所有的数据块都都出来时可能内存还不够,那么它不是将整个block读出来,而是读出一条处理计算一条,类似流式计算,这样可以省内存不用担心内存不够。

创建RDD的三种方式

方式一:从存储在存储系统中的数据上来创建,比如:

val inputRdd: RDD[(LongWritable,Text)] = sc.newAPIHadoopFile("hdfs://master:9000/word.txt",classOf[TextInputFormat],classOf[LongWritable])

这个就是从hdfs存储系统中的数据创建一个RDD

方式二:可以基于一个已经存在的RDD来创建一个RDD

val line: RDD[(String, Int)] = lines.map(line=>(line,))  //从已经存在的lines上创建一个新的RDD

方式三:可以基于一个已经在spark内存中的列表数据来创建一个RDD,比如:

val data = Array(, , , , )
val distData = sc.parallelize(data)

spark sql将Dataset的api翻译成RDD的api来达到计算目的

spark ml是利用Dataset的api和RDD的api来达到计算目的

spark mllib是利用RDD api来达到计算目的

spark Streaming将DStreaming的api翻译成RDD api来达到计算目的

spark graphx是利用RDD api以及拓展RDD来达到计算目的

最新文章

  1. 针对高通BMS的研究 高通电量计
  2. Read/Write file in Android
  3. SQL Server 2008 R2——VC++ ADO 操作 重复利用_CommandPtr
  4. android监听屏幕打开关闭广播无响应的情况
  5. Tyvj 9.10 总结 (其实只是发一下心情)
  6. Android(java)学习笔记137:Android中SimpleAdapter,ArrayAdapter和BaseAdapter常见的适配器
  7. 简单计算器 (c语言课程设计)
  8. 自动布局AutoLayout
  9. GNU PGM
  10. The kth great number(set)
  11. hdu1016Prime Ring Problem
  12. Instruments-Automation: 通过命令行执行测试用例
  13. Android, BaseAdapter 处理大数据量时的优化
  14. HTML中meta的应用
  15. Eclipse导入项目常见问题----服务器版本问题02
  16. MysqL主从复制_模式之GTID复制
  17. 笔记:XML-解析文档-XPath 定位信息
  18. Excel 、数据库 一言不合就转换
  19. SQL优化 MySQL版 - 避免索引失效原则(一)
  20. JS学习笔记Day17

热门文章

  1. Flask--上下文源码流程
  2. find - exec 命令
  3. linux下LAMP环境搭建
  4. 推荐一个android 日期时间选择器(转)
  5. java工程中当前目录在html中的设置
  6. 安装Hadoop 1.1.2 (二 安装配置SSH)
  7. centos7.0 增加/usr分区的容量减少home分区的大小
  8. python 基础 9.6 设计表结构
  9. The space of such functions is known as a reproducing kernel Hilbert space.
  10. oracle 查询重复数据并且删除, 只保留一条数据重复数据