标签:窗口 String val Streaming window ------ Spark DStream ssc
一、window简介
Spark Streaming提供了滑动窗口操作的支持,从而让我们可以对一个滑动窗口内的数据执行计算操作。每次掉落在窗口内的RDD的数据,会被聚合起来执行计算操作,然后生成的RDD,会作为window DStream的一个RDD。(每个滑动窗口操作,都应该指定两个参数,窗口长度以及滑动间隔)
二、案例
package com.sparkstreaming
import org.apache.spark.SparkConf
import org.apache.spark.streaming.dstream.{DStream, ReceiverInputDStream}
import org.apache.spark.streaming.{Seconds, StreamingContext}
object _05WindowOperationDemo {
def main(args: Array[String]): Unit = {
val conf: SparkConf = new SparkConf().setAppName("WindowOperation")
.setMaster("local[*]")
val ssc = new StreamingContext(conf, Seconds(10))
//需要提前在Linux上使用nc -lp 10086开启服务器
val dStream: ReceiverInputDStream[String] = ssc.socketTextStream("192.168.101", 10086)
val mapDStream: DStream[(String, Int)] = dStream.flatMap(_.split(" ")).map((_, 1))
/**
* window(
* windowDuration:Duration, //第一个参数:用于指定窗口的大小,即长度,必须是micro-batch处理时的时间整数倍
* slideDuration:Duration //第二个参数:用于指定窗口滑动的周期,必须是micro-batch处理时的时间整数倍
* )
*
* 数据的情况:
* 1. 刚启动时,窗口里一定没有数据,如果上游没有数据的时间超过窗口的长度时,窗口也没有数据
* 2. 启动程序不久,窗口的数据的变化应该是由少变多
* 3. 在处理数据过程中,窗口的数据可能会由多变少,甚至没有
*/
val windowDStream: DStream[(String, Int)] = mapDStream.window(Seconds(30), Seconds(10))
val resultDStream: DStream[(String, Int)] = windowDStream.reduceByKey(_ + _)
resultDStream.print()
ssc.start()
ssc.awaitTermination()
}
}
标签:窗口,String,val,Streaming,window,------,Spark,DStream,ssc 来源: https://blog.csdn.net/qq_48750919/article/details/121152467
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。