Spark大数据分析 课件 6.2 DStream_第1页
Spark大数据分析 课件 6.2 DStream_第2页
Spark大数据分析 课件 6.2 DStream_第3页
Spark大数据分析 课件 6.2 DStream_第4页
Spark大数据分析 课件 6.2 DStream_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

DStream

目录/Contents01什么是DStream02

DStream转换操作03

DStream输出04SparkStreaming窗口操作什么是DStream01什么是DStreamSparkStreaming提供了一种高级的抽象,叫做DStream,英文全称为DiscretizedStream,中文翻译为“离散流”,它代表了一个持续不断的数据流。DStream可以通过输入数据源来创建,比如Kafka、Flume和Kinesis;也可以通过对其他DStream应用高阶函数来创建,比如map、reduce、join、window。什么是DStreamDStream是spark中继SparkCore的RDD、SparkSQL的DataFrame和DataSet后又一基础的数据类型,是SparkStreaming特有的数据类型。DStream代表了一系列连续的RDD,DStream中每个RDD包含特定时间间隔的数据,存储方式为HashMap<Time,RDD>。其中,Time为时间序列,而RDD我们都很熟悉,它是SparkCore的基础数据结构。DStream转换操作02DStream转换操作方法名称描述map(func)通过将源DStream的每个元素传递给函数func来返回新的DStream

。flatMap(func)与map相似,不同的是每个输入元素可以被映射出0或者更多的输出元素。filter(func)通过仅选择func返回true

的源DStream的记录来返回新的DStream

。repartition(numPartitions)通过创建更多或更少的分区来更改此DStream中的并行度。union(otherStream)返回一个新的DStream,其中包含源DStream和otherDStream中的元素的并集。count()通过计算源DStream的每个RDD中的元素数,返回一个新的单元素RDDDStream。

reduce(func)通过使用函数func(带有两个参数并返回一个)来聚合源DStream的每个RDD中的元素,从而返回一个单元素RDD的新DStream

。该函数应具有关联性和可交换性,以便可以并行计算。

countByValue()在类型为K的元素的DStream上调用时,返回一个新的(K,Long)对的DStream,其中每个键的值是其在源DStream的每个RDD中的频率。reduceByKey(func,[numTasks])在(K,V)对的DStream上调用时,返回一个新的(K,V)对的DStream,其中使用给定的reduce函数聚合每个键的值。注意:默认情况下,这使用Spark的默认并行任务数(本地模式为2,而在集群模式下,此数量由config属性确定spark.default.parallelism)进行分组。您可以传递一个可选numTasks参数来设置不同数量的任务。

join(otherStream,[numTasks])当在(K,V)和(K,W)对的两个DStream上调用时,返回一个新的(K,(V,W))对的DStream,其中每个键都有所有元素对。

cogroup(otherStream,[numTasks])在(K,V)和(K,W)对的DStream上调用时,返回一个新的(K,Seq[V],Seq[W])元组的DStream。

transform(func)通过对源DStream的每个RDD应用RDD-to-RDD函数来返回新的DStream。这可用于在DStream上执行任意RDD操作。

updateStateByKey(func)返回一个新的“状态”DStream,在该DStream中,通过在键的先前状态和键的新值上应用给定函数来更新每个键的状态。这可用于维护每个键的任意状态数据。什么是DStream1.transform(func)在Spark-Streaming官方文档中提到,DStream的transform操作极大的丰富了DStream上能够进行的操作内容。使用transform操作后,除了可以使用DStream提供的一些转换方法之外,还能够直接调用任意的调用RDD上的操作函数。下面演示如何使用transform将一行语句切分成多个单词。2.updateStateByKey(func)updateStateByKey会统计全局的key的状态,不管又没有数据输入,它会在每一个批次间隔返回之前的key的状态。updateStateByKey会对已存在的key进行state的状态更新,同时还会对每个新出现的key执行相同的更新函数操作。DStream输出03DStream输出OutputOperations可以将DStream的数据输出到外部的数据库或文件系统,当某个OutputOperations原语被调用时(与RDD的Action相同),streaming程序才会开始真正的计算过程。也就是说在SparkStreaming中,DStream的输出操作是真正触发DStream上所有转换操作进行计算(类似于RDD中的Action算子操作)的操作,然后经过输出操作,DStream中的数据才能与外部进行交互,如将数据写入到分布式文件系统、数据库以及其他应用中。DStream输出方法描述

print()在运行流应用程序的驱动程序节点上,打印DStream中每批数据的前十个元素。这对于开发和调试很有用。

saveAsTextFiles(prefix,[suffix])将此DStream的内容另存为文本文件。基于产生在每批间隔的文件名的前缀和后缀:“prefix-TIME_IN_MS[.suffix]”。

saveAsObjectFiles(prefix,[suffix])将此DStream的内容保存为SequenceFiles序列化Java对象的内容。基于产生在每批间隔的文件名的前缀和后缀:“prefix-TIME_IN_MS[.suffix]”。

saveAsHadoopFiles(prefix,[suffix])将此DStream的内容另存为Hadoop文件。基于产生在每批间隔的文件名的前缀和后缀:“prefix-TIME_IN_MS[.suffix]”。

foreachRDD(func)最通用的输出运算符,将函数func应用于从流生成的每个RDD。此功能应将每个RDD中的数据推送到外部系统,例如将RDD保存到文件或通过网络将其写入数据库。请注意,函数func在运行流应用程序的驱动程序进程中执行,并且通常在其中具有RDD操作,这将强制计算流RDD。SparkStreaming窗口操作04SparkStreaming窗口操作方法描述

window(windowLength,

slideInterval)

返回基于源DStream的窗口批处理计算的新DStream。countByWindow(windowLength,

slideInterval)返回基于滑动窗口的DStream中的元素数。

reduceByWindow(func,

windowLength,

slideInterval)返回一个新的单元素流,该流是通过使用func在滑动间隔内聚合流中的元素而创建的。该函数应该是关联的和可交换的,以便可以并行正确地计算它。

reduceByKeyAndWindow(func,

windowLength,

slideInterval,[numTasks])在(K,V)对的DStream上调用时,返回新的(K,V)对的DStream,其中使用给定的reduce函数func在滑动窗口中的批处理上聚合每个键的值。注意:默认情况下,这使用Spark的默认并行任务数(本地模式为2,而在集群模式下,此数量由config属性确定spark.default.parallelism)进行分组。您可以传递一个可选numTasks参数来设置不同数量的任务。

reduceByKeyAndWindow(func,

invFunc,

windowLength,

slideInterval,[numTasks])一种更有效的版本,reduceByKeyAndWindow()其中,使用前一个窗口的减少值递增地计算每个窗口的减少值。这是通过减少进入滑动窗口的新数据并“逆向减少”离开窗口的旧数据来完成的。一个示例是在窗口滑动时“增加”和“减少”键的计数。但是,它仅适用于“可逆归约函数”,即具有对应的“逆归约”函数(作为参数invFunc)的归约函数。像in中一样reduceByKeyAndWindow,reduce任务的数量可以通过可选参数配置。请注意,必须启用

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论