赞
踩
每个Spark应用都由一个驱动器程序(drive program)来发起集群上的各种并行操作。驱动器程序包含应用的main函数,驱动器负责创建SparkContext,SparkContext可以与不同种类的集群资源管理器(Cluster Manager),例如Hadoop YARN,Mesos进行通信,获取到集群进行所需的资源后,SparkContext将得到集群中工作节点(Worker Node)上对应的Executor(不同的Spark程序有不同的Executor,他们之间是相互独立的进程,Executor为应用程序提供分布式计算以及数据存储功能),之后SparkContext将应用程序代码发送到各Executor,最后将任务(Task)分配给executors执行
相关组件
一、从文件系统加载创建RDD 通过textFile(path)方法
1、从本地文件系统中加载数据
如:
2、从分布式文件系统HDFS中加载数据
三种方式等价
二、通过并行集合(数组)来创建 通过parallelize()方法
DAG图
对于RDD而言,每次转换操作都会产生不同的RDD,转换得到的RDD是惰性求值的,也就是说,整个转换过程只是记录了转换的轨迹,并不会发生真正的计算,只有到行动操作的时候,才会发生真正的计算,从DAG图的源头开始进行计算操作。
https://github.com/chris1132/spark_lecture/tree/master/src/main/scala/com/chovy/spark/RDD
常用转换操作
filter(func):筛选满足func的元素,返回一个新的数据集
map(func):将每个元素传递到函数func中,返回一个新的数据集
flatMap(func):与map相似,每个输入元素可以映射到0或多个输出结果
groupByKey():应用于(K,V)键值对的数据集,返回一个新的(K,Iterable)形式的数据集
reduceByKey(func):应用于(K,V)键值对的数据集,返回一个新的(K,V)形式的数据集,其中每个值是将每个key传到func函数中进行聚合
常用行动操作
count():返回数据集中的元素个数
collect():以数组的形式返回数据集中的所有元素
first():返回第一个元素
take(n):返回前n个元素
reduce(func):通过函数func聚合数据集中的元素(输入两个参数并返回一个值)
foreach(func):将数据集中的每个元素传递到函数func中运行
RDD惰性机制:只要没有遇到行动类型操作,不会进行真正计算
如下图,在调用reduce方法时才会触发计算
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。