一、word count解析
Discretized Stream是Spark Streaming的基础抽象,代表持续性的数据流和经过各种Spark原语操作后的结果数据流。在内部实现上,DStream是一系列连续的RDD来表示。每个RDD含有一段时间间隔内的数据。
计算过程由Spark Engine来完成
二、DStream创建
2.1 用法及说明
测试过程中,可以通过使用ssc.queueStream(queueOfRDDs)来创建DStream,每一个推送到这个队列中的RDD,都会作为一个DStream处理。
三、Queue 的案例实操
➢需求:循环创建几个RDD,将RDD放入队列。通过SparkStream创建Dstream,计算WordCount
3.1编写代码
package com.lzl.bigdata.spark.streaming
import org.apache.spark.SparkConf
import org.apache.spark.rdd.RDD
import org.apache.spark.streaming.{Seconds, StreamingContext}
import scala.collection.mutable
/**
* @author liang
* @create 2021 - 04 - 02 - 15:26
*/
object wordcount_Queue {
def main(args: Array[String]): Unit = {
//1.初始化Spark配置信息
val sparkConf = new SparkConf().setMaster("local[*]").setAppName("RDDStream")
//2.初始化SparkStreamingContext
val ssc = new StreamingContext(sparkConf,Seconds(4))
//3.创建RDD队列
val rddQueue = new mutable.Queue[RDD[Int]]()
//4.创建QueueInputDStream
val inputStream = ssc.queueStream(rddQueue,oneAtATime = false)
//5.处理队列中的RDD数据
val mappedStream = inputStream.map((_, 1))
val reduceStream = mappedStream.reduceByKey(_+_)
//6.打印结果
reduceStream.print()
//7、启动SparkStreamingContext任务
ssc.start()
//8.循环创建并向RDD队列中放入RDD
for ( i <-1 to 5) {
rddQueue += ssc.sparkContext.makeRDD(1 to 300,10)
Thread.sleep(2000)
}
ssc.awaitTermination()
}
}
运行结果: