Spark Streaming的窗口操作

原创 2014年04月15日 18:16:24

Spark Streaming的Window Operation可以理解为定时的进行一定时间段内的数据的处理。

不要怪我语文不太好。。下面上原理图吧,一图胜千言:


如图:

1. 红色的矩形就是一个窗口,窗口hold的是一段时间内的数据流。

2.这里面每一个time都是时间单元,在官方的例子中,每隔window size是3 time unit, 而且每隔2个单位时间,窗口会slide一次。

所以基于窗口的操作,需要指定2个参数:

  • window length - The duration of the window (3 in the figure)
  • slide interval - The interval at which the window-based operation is performed (2 in the figure).  
1.窗口大小,个人感觉是一段时间内数据的容器。
2.滑动间隔,就是我们可以理解的cron表达式吧。 - -!

举个例子吧:
还是以最著名的wordcount举例,每隔10秒,统计一下过去30秒过来的数据。
// Reduce last 30 seconds of data, every 10 seconds
val windowedWordCounts = pairs.reduceByKeyAndWindow(_ + _, Seconds(30), Seconds(10))

这里的paris就是一个MapedRDD, 类似(word,1)
reduceByKeyAndWindow // 这个类似RDD里面的reduceByKey,就是对RDD应用function
在这里是根据key,对至进行聚合,然后累加。

下面粘贴一下它的API,仅供参考:
Transformation Meaning
window(windowLengthslideInterval) Return a new DStream which is computed based on windowed batches of the source DStream.
countByWindow(windowLength,slideInterval) Return a sliding window count of elements in the stream.
reduceByWindow(funcwindowLength,slideInterval) Return a new single-element stream, created by aggregating elements in the stream over a sliding interval using func. The function should be associative so that it can be computed correctly in parallel.
reduceByKeyAndWindow(func,windowLengthslideInterval, [numTasks]) When called on a DStream of (K, V) pairs, returns a new DStream of (K, V) pairs where the values for each key are aggregated using the given reduce function func over batches in a sliding window. Note: By default, this uses Spark's default number of parallel tasks (2 for local machine, 8 for a cluster) to do the grouping. You can pass an optional numTasks argument to set a different number of tasks.
reduceByKeyAndWindow(funcinvFunc,windowLengthslideInterval, [numTasks]) A more efficient version of the above reduceByKeyAndWindow() where the reduce value of each window is calculated incrementally using the reduce values of the previous window. This is done by reducing the new data that enter the sliding window, and "inverse reducing" the old data that leave the window. An example would be that of "adding" and "subtracting" counts of keys as the window slides. However, it is applicable to only "invertible reduce functions", that is, those reduce functions which have a corresponding "inverse reduce" function (taken as parameterinvFunc. Like in reduceByKeyAndWindow, the number of reduce tasks is configurable through an optional argument.
countByValueAndWindow(windowLength,slideInterval, [numTasks]) When called on a DStream of (K, V) pairs, returns a new DStream of (K, Long) pairs where the value of each key is its frequency within a sliding window. Like in reduceByKeyAndWindow, the number of reduce tasks is configurable through an optional argument.
   

Output Operations

When an output operator is called, it triggers the computation of a stream. Currently the following output operators are defined:

Output Operation Meaning
print() Prints first ten elements of every batch of data in a DStream on the driver.
foreachRDD(func) The fundamental output operator. Applies a function, func, to each RDD generated from the stream. This function should have side effects, such as printing output, saving the RDD to external files, or writing it over the network to an external system.
saveAsObjectFiles(prefix, [suffix]) Save this DStream's contents as a SequenceFile of serialized objects. The file name at each batch interval is generated based on prefix and suffix"prefix-TIME_IN_MS[.suffix]".
saveAsTextFiles(prefix, [suffix]) Save this DStream's contents as a text files. The file name at each batch interval is generated based on prefix and suffix"prefix-TIME_IN_MS[.suffix]".
saveAsHadoopFiles(prefix, [suffix]) Save this DStream's contents as a Hadoop file. The file name at each batch interval is generated based on prefix and suffix"prefix-TIME_IN_MS[.suffix]".
原创,转载请注明出处http://blog.csdn.net/oopsoom/article/details/23776477

Spark-Streaming之window滑动窗口应用

Spark-Streaming之window滑动窗口应用,Spark Streaming提供了滑动窗口操作的支持,从而让我们可以对一个滑动窗口内的数据执行计算操作。每次掉落在窗口内的RDD的数据,会被...
  • wisgood
  • wisgood
  • 2017年02月15日 10:18
  • 1764

SparkStream:2)Window窗体相关操作

SparkStreaming之window滑动窗口应用,Spark Streaming提供了滑动窗口操作的支持,从而让我们可以对一个滑动窗口内的数据执行计算操作。每次掉落在窗口内的RDD的数据,会被聚...
  • jiangpeng59
  • jiangpeng59
  • 2016年11月27日 22:26
  • 1231

Spark Streaming从Kafka中拉取数据,并且使用过“窗口函数”统计一些流量信息

一、应用案例场景: 在Spark Streaming中,我们通常计算的是一段时间间隔内的数据。比如http://blog.csdn.net/tototuzuoquan/article/d...
  • toto1297488504
  • toto1297488504
  • 2017年07月14日 11:03
  • 1203

Spark Streaming之窗口函数和状态转换函数

窗口函数:reduceByKeyAndWindow、countByValueAndWindow、reduceByWindow、countByWindow 状态函数:updateStateByKey、...
  • yitengtongweishi
  • yitengtongweishi
  • 2017年07月10日 15:29
  • 396

基于Spark-Streaming滑动窗口实现——实时排名与统计

基于Spark-Streaming滑动窗口实现——实时排名与统计
  • kwu_ganymede
  • kwu_ganymede
  • 2016年02月05日 13:06
  • 3185

第97课:Spark Streaming在线动态计算特定时间窗口下热门商品排名

使用Spark Streaming + Spark SQL实现在线动态计算出特定时间窗口下的不同种类商品中的热门商品排名...
  • sd637
  • sd637
  • 2016年05月27日 15:35
  • 1508

Spark-Streaming之window滑动窗口应用

Spark-Streaming之window滑动窗口应用,Spark Streaming提供了滑动窗口操作的支持,从而让我们可以对一个滑动窗口内的数据执行计算操作。每次掉落在窗口内的RDD的数据,会被...
  • kwu_ganymede
  • kwu_ganymede
  • 2015年12月04日 18:36
  • 3692

第109讲: Spark Streaming电商广告点击综合案例动态黑名单基于数据库MySQL的真正操作代码实战

package com.dt.streaming; import java.sql.Connection; import java.sql.DriverManager; import java.sq...
  • qq_21234493
  • qq_21234493
  • 2016年05月28日 09:21
  • 1097

Spark Streaming 实战案例(三) DStream Window操作

本节主要内容 Window Operation入门案例 1. Window Operation Spark Streaming提供窗口操作(Window Operation),如下图所示: ...
  • qq_36330643
  • qq_36330643
  • 2017年06月29日 14:52
  • 173

通过Spark Streaming的window操作实战模拟热点搜索词案例实战

本博文主要内容包括:1、在线热点搜索词实现解析 2、SparkStreaming 利用reduceByKeyAndWindow实现在线热点搜索词实战一:在线热点搜索词实现解析背景描述:在社交网络(例...
  • erfucun
  • erfucun
  • 2016年08月24日 08:05
  • 2063
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Spark Streaming的窗口操作
举报原因:
原因补充:

(最多只允许输入30个字)