Spark Streaming源码解读之State管理之UpdataStateByKey和MapWithState解密
本期内容 :
- UpdateStateByKey解密
- MapWithState解密
Spark Streaming是实现State状态管理因素:
01、 Spark Streaming是按照整个BachDuration划分Job的,每个BachDuration都会产生一个Job,为了符合业务操作的需求,
需要计算过去一个小时或者一周的数据,但是由于数据量大于BachDuration,此时不可避免的需要进行状态维护
02、 Spark 的状态管理其实有很多函数,比较典型的有类似的UpdateStateByKey、MapWithState方法来完成核心的步骤
一、 UPdateStateByKey :
在已有历史数据中的状态进行更新,具体怎么更新就取决于UPdateFunc函数进行操作,返回一个DSteam类型



最终还是使用DSteam操作的,会不断的产生数据

生成RDD的过程,计算方法

对传入的数据,通过K对所有数据进行集合:
优点: 每次都需要对RDD进行计算,确实需要对RDD进行计算,RDD怎么算,就对其进行Cogroup
缺点: 性能问题,因为需要每一次都要对所有数据进行扫描,最终变成CogroupedRDD,随着数据量的增加速度也越慢


二、 MapWithState :

返回的是DStreams的时候,进行状态更新与维护历史状态是基于K进行的,具体更新的函数、超时时间、初始状态等都是由StateSpec(封装了更新函数)进行获取、
更新、删除,相当于记录在一张表中,对表中的哪个Key进行操作使用历史数据,State是表名称或者索引,获取、更新数据,维护状态。




所有的Partition都是由MapWithStateRDDRecord所代表的,数据结构是StateMap ,维护的是基于K的状态




Spark Streaming源码解读之State管理之UpdataStateByKey和MapWithState解密的更多相关文章
- 14:Spark Streaming源码解读之State管理之updateStateByKey和mapWithState解密
首先简单解释一下)) //要使用updateStateByKey方法,必须设置Checkpoint. ssc.checkpoint("/checkpoint/") val sock ...
- Spark Streaming源码解读之JobScheduler内幕实现和深度思考
本期内容 : JobScheduler内幕实现 JobScheduler深度思考 JobScheduler 是整个Spark Streaming调度的核心,需要设置多线程,一条用于接收数据不断的循环, ...
- Spark Streaming源码解读之流数据不断接收和全生命周期彻底研究和思考
本节的主要内容: 一.数据接受架构和设计模式 二.接受数据的源码解读 Spark Streaming不断持续的接收数据,具有Receiver的Spark 应用程序的考虑. Receiver和Drive ...
- 15、Spark Streaming源码解读之No Receivers彻底思考
在前几期文章里讲了带Receiver的Spark Streaming 应用的相关源码解读,但是现在开发Spark Streaming的应用越来越多的采用No Receivers(Direct Appr ...
- Spark Streaming源码解读之生成全生命周期彻底研究与思考
本期内容 : DStream与RDD关系彻底研究 Streaming中RDD的生成彻底研究 问题的提出 : 1. RDD是怎么生成的,依靠什么生成 2.执行时是否与Spark Core上的RDD执行有 ...
- Spark Streaming源码解读之Job动态生成和深度思考
本期内容 : Spark Streaming Job生成深度思考 Spark Streaming Job生成源码解析 Spark Core中的Job就是一个运行的作业,就是具体做的某一件事,这里的JO ...
- 11.Spark Streaming源码解读之Driver中的ReceiverTracker架构设计以及具体实现彻底研究
上篇文章详细解析了Receiver不断接收数据的过程,在Receiver接收数据的过程中会将数据的元信息发送给ReceiverTracker: 本文将详细解析ReceiverTracker的的架构 ...
- Spark Streaming源码解读之流数据不断接收全生命周期彻底研究和思考
本期内容 : 数据接收架构设计模式 数据接收源码彻底研究 一.Spark Streaming数据接收设计模式 Spark Streaming接收数据也相似MVC架构: 1. Mode相当于Rece ...
- Spark Streaming源码解读之Receiver生成全生命周期彻底研究和思考
本期内容 : Receiver启动的方式设想 Receiver启动源码彻底分析 多个输入源输入启动,Receiver启动失败,只要我们的集群存在就希望Receiver启动成功,运行过程中基于每个Tea ...
随机推荐
- linux 模块常用命令
lsmod | grep pcspkr 查看pcspkr模块是否运行modprobe -r pcspkr 删除pcspkr模块modinfo pcspkr 查看pcspkr模块信息m ...
- (转)AppiumLibrary基本操作
*** Settings *** Library AppiumLibrary Library Collections Library String Library Dialogs *** Test C ...
- 《Python算法教程》译者序
在计算机的世界中,算法本质上是我们对某一个问题或者某一类问题的解决方案.也就是说,如果我们想用计算机来解决问题的话,就必须将问题的解决思路准确而完整地描述出来,同时计算机也要能理解这个描述.这需要我们 ...
- LoadRunner 11 安装及破解
LoadRunner 11 安装及破解 前提条件: 内存:2G,硬盘空闲空间10G,安装完成后实际只占不到2G 支持winXP SP3;32位与64位win7浏览器支持IE6-8,IE9,fir ...
- redis之(二十一)redis之深入理解Spring Redis的使用
关于spring redis框架的使用,网上的例子很多很多.但是在自己最近一段时间的使用中,发现这些教程都是入门教程,包括很多的使用方法,与spring redis丰富的api大相径庭,真是浪费了这么 ...
- Ubuntu学习——第一篇
一. Ubuntu简介 Ubuntu(乌班图)是一个基于Debian的以桌面应用为主的Linux操作系统,据说其名称来自非洲南部祖鲁语或科萨语的“ubuntu”一词,意思是“人性”.“我的存在是因为大 ...
- Zookeeper基本配置
前面两篇文章介绍了Zookeeper是什么和可以干什么,那么接下来我们就实际的接触一下Zookeeper这个东西,看看具体如何使用,有个大体的感受,后面再描述某些地方的时候也能在大脑中有具体的印象.本 ...
- git常用命令 (阿里云code)
命令行指令 Git 全局设置 git config --global user.name "马会东" git config --global user.email "ma ...
- Lab_7_Automating_v2.5
System Operations - Lab 7: Automating Deployments with CloudFormation - 2.5 ======================== ...
- 影响性能的关键部分-ceph的osd journal写
在前面一篇文章中,我们看到,当使用filestore时,osd会把磁盘分成data和journal两部分.这主要是为了支持object的transaction操作.我的想法是,ceph需要具有数据保护 ...