本期内容 :

  • 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的状态

  

  

  

  

最新文章

  1. php+curl上传文件
  2. NET中的规范标准注释(一) -- XML注释标签讲解
  3. Java 性能优化实战记录(2)---句柄泄漏和监控
  4. maven install 跳过 测试 test
  5. 问题-[WIN764位系统]操作UDL驱动不全处理
  6. 查看ip地址信息和配置临时ip
  7. 掌握jQuery插件开发,这篇文章就够了
  8. Python IDLE快捷键
  9. 面向对象程序设计-C++ Class & Object & Friend Function & Constructor & Destructor【第五次上课笔记】
  10. (一〇二)静态库(.a)的打包
  11. Thirft简单使用
  12. 网页三剑客之HTML
  13. MySQL This function has none of DETERMINISTIC, NO SQL...错误1418 的原因分析及解决方法 (转)
  14. python代码块和小数据池
  15. SpringBoot+SpringDataJPA项目中使用EntityManager执行自定义复杂SQL的方法
  16. tensorflow如何正确加载预训练词向量
  17. 【H5】复制粘贴
  18. 团队项目第六周——Alpha阶段项目复审(盐酸队)
  19. Web 通信 之 长连接、长轮询(转)
  20. html5和css3打造一款创意404页面

热门文章

  1. documentfragment
  2. 如果没有按照正常的先装iis后装.net的顺序,可以使用此命令重新注册一下:
  3. struct2的structs.xml文件配置There is no Action mapped for action name 问题
  4. yii框架中的一些小细节配置问题
  5. Python isinstance() type()
  6. nodemon配置文件简单整理
  7. php://input
  8. Elasticsearch【mappings】类型配置操作
  9. CANVAS 水波动态背景
  10. 使用Navicat连接数据库,不能创建外键