Spark 实时处理 总文章

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zimiao552147572/article/details/88556157

================= 最新文章 ====================== 

1.CDH 6 的安装和使用

2.用户画像

3.Spark 实时处理

============== Spark 实时处理 总文章 =================

Spark(SparkSql) 写数据到 MySQL中(Spark读取TCP socket/文件)

Spark Streaming 整合 Kafka(Spark读取Kafka)

Spark Streaming 整合 Flume(Spark读取Flume)

Spark Streaming 开窗函数 reduceByKeyAndWindow

map、flatMap(流的扁平化)、split 的区别

===========  Spark 实时处理 介绍 =================

基于Spark通用计算平台,可以很好地扩展各种计算类型的应用,尤其是Spark提供了内建的计算库支持,像Spark Streaming、Spark SQL、MLlib、GraphX,这些内建库都提供了高级抽象,
可以用非常简洁的代码实现复杂的计算逻辑、这也得益于Scala编程语言的简洁性。这里,我们基于1.3.0版本的Spark搭建了计算平台,实现基于Spark Streaming的实时计算。  
我们的应用场景是分析用户使用手机App的行为,描述如下所示:  
  
手机客户端会收集用户的行为事件(我们以点击事件为例),将数据发送到数据服务器,我们假设这里直接进入到Kafka消息队列  
后端的实时服务会从Kafka消费数据,将数据读出来并进行实时分析,这里选择Spark Streaming,因为Spark Streaming提供了与Kafka整合的内置支持  
经过Spark Streaming实时计算程序分析,将结果写入Redis,可以实时获取用户的行为数据,并可以导出进行离线综合统计分析  
Spark Streaming介绍  
  
Spark Streaming提供了一个叫做DStream(Discretized Stream)的高级抽象,DStream表示一个持续不断输入的数据流,可以基于Kafka、TCP Socket、Flume等输入数据流创建。
在内部,一个DStream实际上是由一个RDD序列组成的。Sparking Streaming是基于Spark平台的,也就继承了Spark平台的各种特性,
如容错(Fault-tolerant)、可扩展(Scalable)、高吞吐(High-throughput)等。  

在Spark Streaming中,每个DStream包含了一个时间间隔之内的数据项的集合,我们可以理解为指定时间间隔之内的一个batch(批次),每一个batch(批次)就构成一个RDD数据集,
所以DStream就是一个个batch(批次)的有序序列,时间是连续的,按照时间间隔将数据流分割成一个个离散的RDD数据集

streaming-dstream  
我们都知道,Spark支持两种类型操作:Transformations和Actions。

Transformation从一个已知的RDD数据集经过转换得到一个新的RDD数据集,
这些Transformation操作包括map、filter、flatMap、union、join等,而且Transformation具有lazy的特性,调用这些操作并没有立刻执行对已知RDD数据集的计算操作,
而是在调用了另一类型的Action操作才会真正地执行。

Action执行,会真正地对RDD数据集进行操作,返回一个计算结果给Driver程序,或者没有返回结果,如将计算结果数据进行持久化,
Action操作包括reduceByKey、count、foreach、collect等。 

同样,Spark Streaming提供了类似Spark的两种操作类型,分别为Transformations和Output操作,它们的操作对象是DStream,作用也和Spark类似。

Transformation从一个已知的DStream经过转换得到一个新的DStream,而且Spark Streaming还额外增加了一类针对Window的操作,
当然它也是Transformation,但是可以更灵活地控制DStream的大小(时间间隔大小、数据元素个数),
例如:window(windowLength, slideInterval)、countByWindow(windowLength, slideInterval)、reduceByWindow(func, windowLength, slideInterval)等。

Spark Streaming的Output操作允许我们将DStream数据输出到一个外部的存储系统,如数据库或文件系统等,执行Output操作类似执行Spark的Action操作,
使得该操作之前lazy的Transformation操作序列真正地执行。  
  

猜你喜欢

转载自blog.csdn.net/zimiao552147572/article/details/88556157