Spark-Streaming简介、有状态算子

简介: 

  1. Spark Streaming是微批次处理方式,批处理间隔是Spark Streaming是的核心概念和关键参数。
  2. Spark Streaming需要单独一个节点来接收数据,所以Spark 

有状态算子:

  • window
// windowLength : 窗口长度 – 窗口的持久时间(执行一次持续多少个时间单位)
// slideInterval : 滑动步长 – 窗口操作被执行的间隔(每多少个时间单位执行一次)
 window(windowLength, slideInterval)
  • reduceByKeyAndWindow(reduceFunc: (V, V) => V,  windowDuration: Duration, slideDuration: Duration)
val wordAndOne: DStream[(String, Int)] = words.map((_, 1))
/*
参数1: reduce 计算规则
参数2: 窗口长度
参数3: 窗口滑动步长. 每隔这么长时间计算一次.
 */
val count: DStream[(String, Int)] = 
        wordAndOne.reduceByKeyAndWindow((x: Int, y: Int) => x + y,Seconds(15), Seconds(10))
  •  reduceByKeyAndWindow(reduceFunc: (V, V) => V, invReduceFunc: (V, V) => V, windowDuration: Duration, slideDuration: Duration)

实际当中也不会使用此方法,因为要使用历史数据就需要用到checkpoint,而checkpoint就会产生大量小文件

// 比没有invReduceFunc高效. 会利用旧值来进行计算.
// invReduceFunc: (V, V) => V 窗口移动了, 上一个窗口和新的窗口会有重叠部分, 
// 重叠部分的值可以不 用重复计算了. 第一个参数就是新的值, 第二个参数是旧的值.

val count: DStream[(String, Int)] =
    wordAndOne.reduceByKeyAndWindow((x: Int, y: Int) => x + y,(x: Int, y: Int) => x - y,Seconds(15), Seconds(10))
  • countByWindow(windowLength, slideInterval)

返回一个滑动窗口计数流中的元素的个数。

  •  countByValueAndWindow(windowLength, slideInterval, [numTasks])

对(K,V)对的DStream调用,返回(K,Long)对的新DStream,其中每个key的的对象的v是其在滑动窗口中频率。如上,可配置reduce任务数量。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值