RDD创建彻底解密

来源:互联网 发布:增值税发票数据分析 编辑:程序博客网 时间:2024/06/08 12:43

第一个RDD:代表了Spark应用程序输入数据的来源

通过Transformation来对RDD进行各种算子的转换

1, 使用程序中的集合创建RDD;
2, 使用本地文件系统创建RDD;
3, 使用HDFS创建RDD
4, 基于DB创建RDD
5, 基于NoSQL创建RDD,例如HBase
6, 基于S3创建RDD
7, 基于数据流创建RDD

1,通过集合创建RDD的实际意义:测试!
2,使用本地文件系统创建RDD的作用
测试大量的数据的文件
3,使用hdfs来创建rdd,用spark来读写hdfs中的数据(hdfs创建rdd是最常见的方式)

实际上Spark的并行度到底应该设置为多少呢?
我们建议 每个core可以承载2-4个partition 例如说这里有32个core 32*(2~4)=64~128之间,这个设置与数据规模没有关系,只跟每个task在运算时对内存和core的需求有关,

Block被BlockManager管理(管理数据的)
BlockManagerMaster会持有整个Application的Block的位置、Block所占用的存储空间等元数据信息,在Spark的Driver的DAGScheduler中就是通过这些信息来确认数据运行的本地性的

getPreferedLocations在 数据库,

数据本地性
Tachyon(作为中间件)

Spark高手的两个特征是解决spark中的各种bug和调优,2,是修改spark来配合工作需求
基于工作集的应用抽象
Mapreduce是基于数据集 都可以提供位置感知,容错,负载均衡
基于数据集的处理:从物理存储设备上加载数据,然后操作数据,然后写入物理设备
Hadoop mapreduce 是基于数据集
基于数据集的操纵不适宜的场景,1,不适宜大量的迭代(每一步对数据采用相似的函数),2,不适合交互式查询
重点是基于数据流的方式不能够复用曾经的结果或者中间计算结果
RDD是基于工作集
RDD:Resilient Distributed Dataset(弹性分布数据集)
1. 弹性之一:自动的进行内存和磁盘数据存储的切换;
2. 弹性之二:基于Lineage的高度容错(第n个节点出错,会从n-1个节点恢复,血统容错)
3. 弹性之三:Task如果失败会自动进行特定次数的重试(默认4次)
4. 弹性之四:Stage如果失败会自动进行特定次数的重试(可以只运算失败的阶段);只计算失败的数据分片
5. Checkpoint(检查点),persist(持续化)
Checkpoint 是什么? 一般情况下,每次操纵RDD就会产生新的RDD,除了最后一次action触发作业以外,但是有时链条比较长或者计算比较笨重的时候,我们考虑把数据放到磁盘,这就叫checkpoint,
6.数据调度弹性:DAG,TASK和资源管理无关
7,数据分片的高度弹性 repartition
如果一个stage有一千个计算过程,默认的情况下只会产生一个结果

0 0
原创粉丝点击