Spark学习03(Spark任务提交流程+宽窄依赖)

夙愿已清 提交于 2019-12-02 02:53:12

Spark编程-----二次排序和分组取TopN

RDD的宽窄依赖

宽依赖:每一个父RDD的Partition中的数据,都可能传输到子RDD的每个Partition中,这种错综复杂的关系,叫宽依赖

宽依赖划分依据:Shuffle

窄依赖:一个RDD对它的父RDD,只有一个一对一的依赖关系,也就是说,RDD的每个Partition,仅仅依赖于一个父RDD的Partition,一对一的关系叫窄依赖

窄依赖划分依据:没有Shuffle

Join有一个特殊情况,虽然Join是Shuffle算子,但是也会触发窄依赖

例如:
在这里插入图片描述

血缘

父RDD与子RDD直接存在依赖关系,这种依赖关系叫血缘,同时通过血缘关系,可以达到容错的机制(RDD之间的容错)

案例:基站解析案例

根据用户产生日志的信息,在那个基站停留时间最长
19735E1C66.log 这个文件中存储着日志信息
文件组成:手机号,时间戳,基站ID 连接状态(1连接 0断开)
lac_info.txt 这个文件中存储基站信息
文件组成 基站ID, 经,纬度
在一定时间范围内,求所用户经过的所有基站所停留时间最长的Top2
思路:
1.获取用户产生的日志信息并切分
2.用户在基站停留的总时长
3.获取基站的基础信息
4.把经纬度的信息join到用户数据中
5.求出用户在某些基站停留的时间top2

案例:统计某时间段学科访问量TopN

统计每个时间段内的学科访问量Top2

Spark任务提交流程(重点)

在这里插入图片描述

Checkpoint(检查点)

Checkpoint相当于缓存,但是 他保存的位置是磁盘,并且是永久性保存,会保存到HDFS,这个检查点,比较持久化来说,数据更安全,但是效率很低,一般在程序中设置的位置较少,没有持久化效率高

功能可以在集群运行时候,如果发生了宕机情况 ,可以通过检查点恢复检查点数据

应用场景:在特别复杂的RDD依赖中,可以使用检查点机制,因为依赖过多,可能会发生集群宕机情况,所以在适合的位置设置检查点是有必要的

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!