SparkStreaming中关于带状态的算子updateStateByKey算子和CheckPoint的使用

本文探讨了在SparkStreaming中如何利用updateStateByKey算子和Checkpoint机制实现状态累加。通过举例词频统计,说明在连续数据流处理中保持状态的重要性。元数据和数据的Checkpoint用于故障恢复,updateStateByKey则结合历史状态和新数据进行累加,避免对持久存储的频繁访问。
摘要由CSDN通过智能技术生成

updateStateByKey算子和CheckPoint的使用题

应用场景

以词频统计为例,一个简单的词频只会分析出当前这一个批次的单词数,也就是说:
第一次输入 a a a b 会输出 ( a,3 b,1 );
第二次输入 a a a b 还是会输出 ( a,3 b,1 );
可是更多的应用场景是需要把这些数据累加起来,就是让他输出 ( a,6 b,2 )

其实这个也好实现,
方法一: 你可以借用Mysql,在每一次得到输入的参数的时候,去Mysql中找到对应的数据, 进行累加,再写回Mysql。或者是其他地方
方法二:可以借用Redis 缓存,暂时存到Redis中。然后计算。 但是这样也不能长期保存。

这两种方法都用一定的局限性,所以就引出了updateStateByKey CheckPoint

import org.apache.spark.SparkConf
import org.apache.spark.streaming.dstream.DStream
import org.apache.spark.streaming.{Seconds, StreamingContext}

/**
  * 使用Spark Streaming完成有状态统计
  */
object StatefulWordCount {

  def main(args: Array[String]): Unit = {


    val sparkConf = new SparkConf().setAppName("StatefulWordCount").setMaster("local[2]")
    val ssc = new StreamingContext(sparkConf, Seconds(5))
    
    /
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值