Spark是用于大规模数据处理的统一分析引擎
RDD:d性分布式数据集,认为是列表list
Spark框架将要处理的数据封装到集合RDD中,调用RDD中函数处理数据
RDD数据可以放到内存中,内存不足可以放到磁盘中
Spark四大特点:- 运行速度快
- 易用性好
- 通用性强
- 随处运行
- Spark处理数据时,可以将中间处理结果数据存储到内存中,而mapreduce是将中间处理结果数据存储到磁盘中
- Spark job调度以DAG方式,并且每个任务Task执行以线程方式执行,并不像mapreduce以进程方式执行
- spark sql:spark用来 *** 作结构化数据的程序包,通过Spark sql,可以使用sql *** 作数据
- spark Streaming:spark提供的对实时数据进行流式分析计算的组件,提供了用来 *** 作数据流的API
将Spark任务的pyspark文件,进过Py4J转换,提交到Yarn的JVM中去运行
Spark集群角色:- Drivere:是一个JVM Porcess 进程,编写的Spark应用程序就运行在Driver上,由Driver进程执行;
- Master(ResourceManager):是一个JVMProcess进程,主要负责资源的调度和分配,并进行集群的监控等职责;
- Worker(NodeManager):是一个JVM Process进程,一个Worker运行在集群中的一台服务器上,主要负责两个职责,一个是用自己的内存存储RDD的某个或某些partition,另一个是启动其他进程和线程,对Rdd上的partition进行并行处理和计算
- Executor:是一个JVM process 进程,一个Worker上可以运行多个Executor,Executor通过启动多个线程(task)来执行对RDD的partition进行并行计算,也就是执行我们对定义的,例如map、flatMap、reduce等算子 *** 作。
udf:一对一的关系,输入一个值经过函数以后输出一个值
udaf:多对一的关系,输入多个值输出一个值,通常与groupBy联合使用
udtf:一对多的关系,输入一个值输出多个值,用户自定义生成函数,有点像flatMap
reduceBykey和groupBykey的区别:reduceBykey在map阶段就聚合了,把聚合后的数据再通过shiffe阶段分发给reduce阶段,然后在reduce阶段再聚合,而groupBykey把所有数据通过shiffe分发给reduce阶段,再有reduece阶段聚合
RDD:RDD是d性分布式数据集,可以看成一个列表对象
RDD分区:分区数量决定了并行的数量
分区数量=运行任务的可用的cores(默认一个cores(核心),能处理一个任务)
指定分区数量:val rdd = sc.makeRDD(arr,分区的数值)
RDD算子:- 转换算子:根据原有的RDD转换为一个新的RDD
- map()
- faltmap()
- groupByKey()
- reduceBykey()
- 动作算子:对RDD *** 作后把结果返回给driver
- reduce()
- collect()
- count()
- first()
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)