SPARK中对RDD的基本操作

来源:互联网 发布:淘宝怎么申请授权书 编辑:程序博客网 时间:2024/05/26 09:55

1、SPARK简介
(1)一种计算框架.spark其实只是一个计算引擎,而hadoop包含了存储和计算。也就是说,spark最多也就能替换掉hadoop的计算部分(mapreduce)。可从事包含流计算机器学习等功能,和hadoop相互兼容(可以从HDFS读取数据)。
重要特征:
在mapreduce会反复使用磁盘进行数据读取的迭代,spark则将所需要的数据先加载进内存。所以spark速度更快。
所谓map,就是把数据切片,reduce阶段,则是将数据进行混合处理。mapreduce只有两个算子,而spark提供的算子更多。
DAG(有向无环图),spark将任务以来解析为一个有向无环图。
和mapreduce不同,spark基于线程池
delay scheduling思想:假设一个节点接受一个任务,发现自己没有资源(如CPU空闲),会在某个时间区间后再次查看自己是否具有资源,通过任务的等待,而避免将任务依赖数据大规模在内网转移。大数据的处理原则就是,计算跟着数据走。

目前SPARK提供了java,python,scala和R语言四种API。spark是由scala写的。java8以前不支持函数式编程,在以前必须要采用匿名内部类的方式来实现,非常的丑陋,不推荐使用。

cluster manager
local 本地调度
standalone spark自带的集群管理器,是支持集群的,不是单机的意思

(2)架构如图所示:
YARN、MESOS是资源调度框架。
HDFS,S3是分布式文件系统
Tachyon是分布式文件系统,存在于内存中,以HDFS做持久化
Apache spark为批处理计算引擎
建立在spark基础上的有spark streaming(流处理,确切来说是微小的批处理)。spark sql可以用来实时查询。
上述的所有组件都在spark安装包里都包含了

一个SPARK的application由若干个job和一个driver program组成。用户提交的JOB会被提交给DAGScheduler.每个job包含多个stage。每个stage对应一个taskset,一个taskset包含若干个task。task是最小的工作单元。
driver program负责运行main函数,并创建sparkcontext.
spark中有两种TASK,一种为shuffle map task,一种为result task。

2、

(1)MAP
将RDD转化为新的一个mappedRDD
(2)distinct
对RDD中的元素进行去重
(3)cartesian
对两个RDD计算其笛卡尔积

0 0