spark第四课

countByValue
数据源中相同的值有多少个,也就是WordCount
spark第四课_第1张图片
countByKey
表的是键值对中的key出现了几次,与Value的值无关
spark第四课_第2张图片
不推荐collect,因为他是将数据放入内存,但是内存不够大的话,就容易崩,所以使用saveAsTextFile更好,直接放入磁盘.spark第四课_第3张图片
保存成对象文件,需要序列化
启动了2个
Job数量: 只要执行一个行动算子,就会产生一个作业.(不考虑前面,例如sortby也会产生一个作业)

算子的外部代码 在Driver执行 ,内部在Executor执行
spark第四课_第4张图片
压栈也需要消耗的

forEachPartition
forEach
2个的效率比较
分区的大于foreach,因为foreach是一个一个压栈,而Partition是一个区一个区压栈
// 一次处理一个分区的数据
// 一次处理一个分区的数据
在这里插入图片描述
spark第四课_第5张图片

spark第四课_第6张图片
spark第四课_第7张图片
IO
计算机互相传的是ASCII(0-255),
JAVA byte -128-127 所以,网络传输可以使用字节流
所以网络传输必须序列化

spark第四课_第8张图片
这里还是序列化错误
可是为什么???
因为query是this,query 所以必须传Search,所以这里就需要序列化
spark第四课_第9张图片
这样改就不需要序列化了.
String q = this.query是在Driver中执行
而q是临时变量,不需要对象
在这里插入图片描述
为什么上面报错?
使用lambda 传的是方法,但是对象是在Driver端的
Sysout.out这个对象是在Driver中,但是方法在Executor执行

序列化与反序列化
反序列化通过序列码重新创建对象,而不是使用序列化的对象

spark第四课_第10张图片
对象输出流实现

spark第四课_第11张图片
装饰者设计模式就是层层依赖的
A-B B-C 直接依赖
A和C间接依赖
ABC(血缘关系)

RDD的依赖关系:
1.窄依赖 NarrowDependency OneToOneDependency
2.宽依赖 不是窄,就是宽
spark第四课_第12张图片
一对一

spark第四课_第13张图片
宽依赖 shuffle依赖 数据被打乱重新组合

依赖是在创建时就已经确定了,而shuffle是在创建后运行时才使用的.

Application数量(应用程序数量)
按照当前环境来算的,创建几个JavaSparkContext对象,就有几个Application对象.
在这里插入图片描述
spark第四课_第14张图片
Stage数量(一个job至少一个阶段,1个shuffle就是一个阶段)
一个stage数量 = 1(job基本数量)+宽依赖的数量

Task任务数量
最近分区的最大数量
当前RDD最后的分区数量

Result
基于Shuffle
spark第四课_第15张图片
Task数量 : 基于Stage = 分区数量
Task任务数 = 当前阶段中最后一个RDD的分区数量=-

coalesce方法默认在

你可能感兴趣的:(大数据,Spark,spark,大数据,分布式)