Spark- RDD简介
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来达到计算目的
最新文章
- 针对高通BMS的研究 高通电量计
- Read/Write file in Android
- SQL Server 2008 R2——VC++ ADO 操作 重复利用_CommandPtr
- android监听屏幕打开关闭广播无响应的情况
- Tyvj 9.10 总结 (其实只是发一下心情)
- Android(java)学习笔记137:Android中SimpleAdapter,ArrayAdapter和BaseAdapter常见的适配器
- 简单计算器 (c语言课程设计)
- 自动布局AutoLayout
- GNU PGM
- The kth great number(set)
- hdu1016Prime Ring Problem
- Instruments-Automation: 通过命令行执行测试用例
- Android, BaseAdapter 处理大数据量时的优化
- HTML中meta的应用
- Eclipse导入项目常见问题----服务器版本问题02
- MysqL主从复制_模式之GTID复制
- 笔记:XML-解析文档-XPath 定位信息
- Excel 、数据库 一言不合就转换
- SQL优化 MySQL版 - 避免索引失效原则(一)
- JS学习笔记Day17
热门文章
- Flask--上下文源码流程
- find - exec 命令
- linux下LAMP环境搭建
- 推荐一个android 日期时间选择器(转)
- java工程中当前目录在html中的设置
- 安装Hadoop 1.1.2 (二 安装配置SSH)
- centos7.0 增加/usr分区的容量减少home分区的大小
- python 基础 9.6 设计表结构
- The space of such functions is known as a reproducing kernel Hilbert space.
- oracle 查询重复数据并且删除, 只保留一条数据重复数据