(版本定制)第14课:Spark Streaming源码解读之State管理之updateStateByKey和mapWithState解密
发表于:2024-09-23 作者:千家信息网编辑
千家信息网最后更新 2024年09月23日,本期内容:1、updateStateByKey解密2、mapWithState解密背景:整个Spark Streaming是按照Batch Duractions划分Job的。但是很多时候我们需要算过去
千家信息网最后更新 2024年09月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安全错误
数据库的锁怎样保障安全
高青mes软件开发公司
计算机网络技术集成
中国移动提供网络安全服务
正规小额贷款软件开发流程
辽宁软件开发视频下载
系统软件开发注意事项
计算机二级网络技术有什么用
杭州远程网络技术有限公司
第三方软件开发定制服务费
四通道服务器主板
江西定制应用软件开发
监控存储服务器搭建
世界网络安全公司500强
校园超市管理系统数据库
福建系统软件开发项目
长春软件开发基地
网络安全防护管理安全
软件开发的生命周期过程
服务器转移虚拟机
新手学电脑网络安全
数据库合并关键字
怎么卸载数据库
滨州采购软件开发
ibm服务器更换内存
国产网络服务器机柜批发
网络安全操作记录台帐
标准网络技术推广
身体不好不宜从事软件开发工作
澳大利亚网络安全行为
2020年网络安全专业排名