流式计算应用12_第1页
流式计算应用12_第2页
流式计算应用12_第3页
流式计算应用12_第4页
流式计算应用12_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算应用学习流式01有状态转化介绍目录02UpdateStateByKey有状态转化介绍1有状态转化介绍

DatehelloDateDateDateDateDatehelloDateDateDateDate3s3s采集器DStreamHello,2UpdateStateByKey2UpdateStateByKey

UpdateStateByKey原语用于记录历史记录,有时,我们需要在DStream中跨批次维护状态(例如流计算中累加wordcount)。针对这种情况,updateStateByKey()为我们提供了对一个状态变量的访问,用于键值对形式的DStream。给定一个由(键,事件)对构成的DStream,并传递一个指定如何根据新的事件更新每个键对应状态的函数,它可以构建出一个新的DStream,其内部数据为(键,状态)对。updateStateByKey()的结果会是一个新的DStream,其内部的RDD序列是由每个时间区间对应的(键,状态)对组成的。updateStateByKey操作使得我们可以在用新信息进行更新时保持任意的状态。为使用这个功能,需要做下面两步:1.定义状态,状态可以是一个任意的数据类型。2.定义状态更新函数,用此函数阐明如何使用之前的状态和来自输入流的新值对状态进行更新。使用updateStateByKey需要对检查点目录进行配置,会使用检查点来保存状态。

UpdateStateByKey

Wordcount:编写代码objectSparkStreaming05_State{

defmain(args:Array[String]):Unit={

valsparkConf=newSparkConf().setMaster("local[*]").setAppName("SparkStreaming")valssc=newStreamingContext(sparkConf,Seconds(3))ssc.checkpoint("cp")

//无状态数据操作,只对当前的采集周期内的数据进行处理//在某些场合下,需要保留数据统计结果(状态),实现数据的汇总//使用有状态操作时,需要设定检查点路径valdatas=ssc.socketTextStream("localhost",9999)

valwordToOne=datas.map((_,1))

//valwordToCount=wordToOne.reduceByKey(_+_)

//updateStateByKey:根据key对数据的状态进行更新//传递的参数中含有两个值//第一个值表示相同的key的value数据//第二个值表示缓存区相同key的value数据valstate=wordToOne.updateStateByKey((seq:Seq[Int],buff:Option[Int])=>{valnewCount=buff.getOrElse(0)+seq.sumOption(newCount)})state.print()

ssc.start()ssc.awaitTermination()UpdateStateByKey

Wordcount:结果展示-------------------------------------------Time:1612426170000ms-------------------------------------------(hello,1)

-------------------------------------------Time:1612426176000ms-------------------------------------------(hello,1)(spark,1)

-------------------------------------------Time:1612426179000

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论