主页 > 新闻资讯 > 大数据学习:Spark Streaming DStream入门

大数据学习:Spark Streaming DStream入门

作者:张老师 浏览次数: 2021-03-17 17:39
在大数据学习当中,Spark框架是其中非常重要的一个部分,虽然Spark继承了Hadoop MapReduce在离线批处理的设计,但是在具体的实现细节当中,还有更多的优化,这其中就包括RDD以及DStream。今天的大数据学习分享,我们就主要来讲讲Spark Streaming DStream入门。

大数据学习:Spark Streaming DStream入门

一、什么是Dstream?

Discretized Stream是Spark Streaming的基础抽象,代表持续性的数据流和经过各种Spark原语操作后的结果数据流。在内部实现上,DStream是一系列连续的RDD来表示。每个RDD含有一段时间间隔内的数据,如下图:

大数据学习:Spark Streaming DStream入门

对数据的操作也是按照RDD为单位来进行的。

大数据学习:Spark Streaming DStream入门

是SparkStreaming中最基本的抽象,也是抽象的分布式集合,也是装着描述信息,是对RDD的进一步封装,DStream可以定期的生成RDD。

DStream可以从很多的数据源创建

你对DStream进行操作,本质但是是对DStream中的RDD进行操作,你的RDD进行操作,本质上是对RDD的每一个分区进行操作。

二、Dstream相关操作

DStream上的算子与RDD的类似,分为Transformations(转换)和Output Operations(输出)两种,此外转换操作中还有一些比较特殊的算子,如:updateStateByKey()、transform()以及各种Window相关的操作。

①Transformations
大数据学习:Spark Streaming DStream入门

②特殊的Transformations

UpdateStateByKey Operation

该updateStateByKey操作使您可以保持任意状态,同时不断用新信息更新它。要使用此功能,必须执行两个步骤。

定义状态-状态可以是任意数据类型。

定义状态更新功能-使用功能指定如何使用输入流中的先前状态和新值来更新状态。

在每个批次中,Spark都会对所有现有密钥应用状态更新功能,无论它们是否在批次中具有新数据。如果更新函数返回,None则将删除键值对。

def updateFunction(newValues:Seq[Int],runningCount:Option[Int]):Option[Int]={
val newCount=...//add the new values with the previous running count to get the new count
Some(newCount)
}

Transform Operation

该transform操作(及其类似的变体transformWith)允许将任意RDD-to-RDD功能应用于DStream。它可用于应用DStream API中未公开的任何RDD操作。例如,将数据流中的每个批次与另一个数据集连接在一起的功能未直接在DStream API中公开。但是,你可以轻松地使用它transform来执行此操作。这实现了非常强大的可能性。例如,可以通过将输入数据流与预先计算的垃圾邮件信息(可能也由Spark生成)结合在一起,然后基于该信息进行过滤来进行实时数据清除。

val spamInfoRDD=ssc.sparkContext.newAPIHadoopRDD(...)//RDD containing spam information
val cleanedDStream=wordCounts.transform{rdd=>
rdd.join(spamInfoRDD).filter(...)
//join data stream with spam information to do data cleaning
...
}

请注意,在每个批处理间隔中都会调用提供的函数。这使你可以执行随时间变化的RDD操作,即可以在批之间更改RDD操作,分区数,广播变量等。

Window Operations

Spark Streaming还提供了窗口计算,可在数据的滑动窗口上应用转换。下图说明了此滑动窗口。

大数据学习:Spark Streaming DStream入门

如该图所示,每当窗口滑动在源DSTREAM,落入窗口内的源RDDS被组合及操作以产生RDDS的窗DSTREAM。在这种特定情况下,该操作将应用于数据的最后3个时间单位,并以2个时间单位滑动。这表明任何窗口操作都需要指定两个参数。

窗口长度-窗口的持续时间

滑动间隔-进行窗口操作的间隔

这两个参数必须是源DStream的批处理间隔的倍数

③Output Operations on DStreams
大数据学习:Spark Streaming DStream入门

关于大数据学习,Spark Streaming DStream入门,以上就为大家做了基本的介绍了。RDD是Spark当中的一个核心概念,建议要先理解了RDD,再来看DStream,会更加容易理解。成都加米谷大数据,专业大数据培训机构,大数据开发、数据分析与挖掘,零基础就业班本月正在招生中,课程大纲及学习视频可联系客服获取!
热点排行
推荐文章
立即申请>>