(版本定制)第14课:Spark Streaming源码解读之State管理之updateStateByKey和mapWithState解密
发表于:2024-11-23 作者:千家信息网编辑
千家信息网最后更新 2024年11月23日,本期内容:1、updateStateByKey解密2、mapWithState解密背景:整个Spark Streaming是按照Batch Duractions划分Job的。但是很多时候我们需要算过去
千家信息网最后更新 2024年11月23日(版本定制)第14课:Spark Streaming源码解读之State管理之updateStateByKey和mapWithState解密
本期内容:
1、updateStateByKey解密
2、mapWithState解密
背景:
整个Spark Streaming是按照Batch Duractions划分Job的。但是很多时候我们需要算过去的一天甚至一周的数据,这个时候不可避免的要进行状态管理,而Spark Streaming每个Batch Duractions都会产生一个Job,Job里面都是RDD,
所以此时面临的问题就是怎么对状态进行维护?这个时候就需要借助updateStateByKey和mapWithState方法完成核心的步骤。
1、简单看下updateStateByKey源码:
在DStream中updateStateByKey和mapWithState是通过隐式转换来完成,本身没有这样的方法。
implicit def toPairDStreamFunctions[K, V](stream: DStream[(K, V)]) (implicit kt: ClassTag[K], vt: ClassTag[V], ord: Ordering[K] = null): PairDStreamFunctions[K, V] = {new PairDStreamFunctions[K, V](stream)}
[: ClassTag]( updateFunc: ([]Option[]) => Option[] ): DStream[()] = ssc.withScope { updateStateByKey(updateFuncdefaultPartitioner())}
最终会通过StateDStream中的computeUsingPreviousRDD和compute来完成这样的功能,简单的流程图如下:
2、简单看下mapWithState源码
mapWithState是返回MapWithStateDStream对象,维护和更新历史状态都是基于Key,使用一个function对key-value形式的数据进行状态维护
[: ClassTag: ClassTag]( spec: StateSpec[] ): MapWithStateDStream[] = {MapWithStateDStreamImpl[]( selfspec.asInstanceOf[StateSpecImpl[]] )}
通过InternalMapWithStateDStream类中的compute来完成,简单的流程图如下:
状态
时候
源码
数据
方法
流程
流程图
管理
不可避免
内容
功能
历史
对象
就是
形式
核心
步骤
背景
问题
更新
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
欧玛软件开发价格
上海栈谷网络技术有限公司
涉嫌网络安全法
在数据库会碰到哪些问题
浪潮服务器安装系统后不启动
军方网络安全股票
恐惧之夜怎么创建服务器
无线网络安全现状的分析
多淘网络技术有限公司
东莞众一网络技术
软件开发转测试面试
电离层数据库建模
数据库和网络技术哪个实用
手机的自定义dns服务器
服务器虚拟化产品比较
服务器 4节点
安徽正规软件开发诚信推荐
内容存储服务器管理工作站
php软件开发流程
软件开发图元
iphone如何关闭数据库表
低学历培训软件开发吗
谈谈你对软件开发的认识
宣传篇网络安全小贴士
和平精英地下城哪个服务器最肥
济宁微信软件开发公司
arm64 服务器
内容存储服务器管理工作站
好玩吧类似趣步软件开发
如何给目标板装sshd服务器