Spark大数据分析 课件 第6章 Spark存储原理_第1页
Spark大数据分析 课件 第6章 Spark存储原理_第2页
Spark大数据分析 课件 第6章 Spark存储原理_第3页
Spark大数据分析 课件 第6章 Spark存储原理_第4页
Spark大数据分析 课件 第6章 Spark存储原理_第5页
已阅读5页,还剩33页未读, 继续免费阅读

下载本文档

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

文档简介

认识SparkStreaming

目录/Contents01

什么是流式计算01

什么是SparkStreaming01

SparkStreaming工作原理什么是流式计算01什么是流式计算在日常生活中,我们通常会先把数据存储在一张表中,然后再进行加工、分析,这里就涉及到一个时效性的问题。如果我们处理以年、月为单位的级别的数据,那么多数据的实时性要求并不高;但如果我们处理的是以天、小时,甚至分钟为单位的数据,那么对数据的时效性要求就比较高。在第二种场景下,如果我们仍旧采用传统的数据处理方式,统一收集数据,存储到数据库中,之后在进行分析,就可能无法满足时效性的要求。1、流式计算诞生背景什么是流式计算流式处理可以用于两种不同场景:事件流和持续计算。(1)事件流事件流具能够持续产生大量的数据,这类数据最早出现于传统的银行和股票交易领域,也在互联网监控、无线通信网等领域出现、需要以近实时的方式对更新数据流进行复杂分析如趋势分析、预测、监控等。简单来说,事件流采用的是查询保持静态,语句是固定的,数据不断变化的方式。(2)持续计算比如对于大型网站的流式数据:网站的访问PV/UV、用户访问了什么内容、搜索了什么内容等,实时的数据计算和分析可以动态实时地刷新用户访问数据,展示网站实时流量的变化情况,分析每天各小时的流量和用户分布情况;2、流式计算主要应用场景什么是SparkStreaming02什么是SparkStreaming1、基本概念SparkStreaming是构建在Spark上的实时计算框架,它扩展了Spark处理大规模流式数据的能力。SparkStreaming可结合批处理和交互查询,适合一些需要对历史数据和实时数据进行结合分析的应用场景。SparkStreaming是Spark的核心组件之一,为Spark提供了可拓展、高吞吐、容错的流计算能力。如下图所示,SparkStreaming可整合多种输入数据源,如Kafka、Flume、HDFS,甚至是普通的TCP套接字。经处理后的数据可存储至文件系统、数据库,或显示在仪表盘里。什么是SparkStreamingSparkStreaming是SparkcoreAPI的扩展,支持实时数据流的处理,并且具有可扩展,高吞吐量,容错的特点。SparkStreaming具有如下显著特点。(1)易用性可以像编写离线批处理一样去编写流式程序,支持java/scala/python编程语言(2)容错性SparkStreaming在没有额外代码和配置的情况下可以恢复丢失的工作。(3)易整合性流式处理与批处理和交互式查询相结合非常方便。什么是SparkStreamingSparkStreaming核心术语(1)离散流(DStream)(2)批数据(batchdata)(3)时间片或批处理时间间隔(batchinterval)(4)窗口长度(windowlength)(5)滑动时间间隔(6)InputDStreamSparkStreaming工作原理03SparkStreaming工作原理SparkStreaming支持从多种数据源提取数据,如:Kafka、Flume、Twitter、ZeroMQ、Kinesis以及TCP套接字,并且可以提供一些高级API来表达复杂的处理算法,如:map、reduce、join和window等。最后,SparkStreaming支持将处理完的数据推送到文件系统、数据库或者实时仪表盘中展示。SparkStreaming工作原理整个流式计算根据业务的需求可以对中间的结果进行缓存或者存储到外部设备。感谢大家的聆听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任务的数量可以通过可选参数配置。请注意,必须启用检查点才能使用此操作。

countByValueAndWindow(windowLength,

slideInterval,[numTasks])在(K,V)对的DStream上调用时,返回新的(K,Long)对的DStream,其中每个键的值是其在滑动窗口内的频率。像in中一样

reduceByKeyAndWindow,reduce任务的数量可以通过可选参数配置。感谢大家的聆听SparkStreaming应用案例目录/Contents01SparkStreaming实现单词统计02SparkStreaming热搜统计03自定义输出04SparkStreaming窗口计算SparkStreaming实现单词统计01SparkStreaming实现单词统计(1)实验内容本实验主要介绍在IDEA中开发SparkStreaming案例-WordCount,从TCPSocket数据源实时消费数据,对每批次Batch数据进行词频统计。(2)实验目的1、掌握Spark窗口计算(3)实验步骤步骤1准备工作步骤2SparkStreaming-WordCount代码实现(4)步骤1准备工作在任一主机上安装nc命令:yuminstall-yncnc是netcat的简称,原本是用来设置路由器,我们可以利用它向某个端口发送数据。(5)步骤2SparkStreaming-WordCount代码实现在spark_wc项目下新建名为WordCount01的scala类,使用SparkStreaming接收来自某一主机9999端口的数据并做WordCount。SparkStreaming热搜统计02SparkStreaming热搜统计(1)实验内容本实验主要介绍在IDEA中开发SparkStreaming案例-WordCount,从TCPSocket数据源实时消费数据,模拟百度热搜排行榜。(2)实验目的1、熟悉DStream的transform方法的使用(3)实验步骤步骤1代码实现(4)步骤1代码实现在spark_wc项目下新建名为WordCount05的scala类,使用

温馨提示

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

评论

0/150

提交评论