主页 > 新闻资讯 > 大数据学习:Spark Streaming vs Structured Streaming

大数据学习:Spark Streaming vs Structured Streaming

作者:张老师 浏览次数: 2020-12-16 17:10
在Spark框架当中,其负责流计算任务的组件,主要是Spark Streaming,但是随着大数据继续发展,Spark Streaming也开始有了各种场景下的局限,于是又推出了Structured Streaming。今天的大数据学习分享,我们就来对Spark Streaming 和 Structured Streaming对个简单的对比。

关于 Spark Streaming

Spark Streaming是Spark最初的流处理框架,使用了微批的形式来进行流处理。提供了基于RDDs的Dstream API,每个时间间隔内的数据为一个RDD,源源不断对RDD进行处理来实现流计算。

关于 Structured Streaming

Spark 2.X出来的流框架,采用了无界表的概念,流数据相当于往一个表上不断追加行。基于Spark SQL引擎实现,可以使用大多数Spark SQL的function。

大数据学习:Spark Streaming vs Structured Streaming

Spark Streaming 和 Structured Streaming区别

①流模型

Spark Streaming采用微批的处理方法。每一个批处理间隔的为一个批,也就是一个RDD,我们对RDD进行操作就可以源源不断的接收、处理数据。

Structured Streaming将实时数据当做被连续追加的表,流上的每一条数据都类似于将一行新数据添加到表中。

②RDD vs DataFrame、DataSet

Spark Streaming中的DStream编程接口是RDD,我们需要对RDD进行处理,处理起来较为费劲且不美观。

Structured Streaming使用DataFrame、DataSet的编程接口,处理数据时可以使用Spark SQL中提供的方法,数据的转换和输出会变得更加简单。

③ Process Time vs Event Time

Process Time:流处理引擎接收到数据的时间

Event Time:事件真正发生的时间

Spark Streaming中由于其微批的概念,会将一段时间内接收的数据放入一个批内,进而对数据进行处理。划分批的时间是Process Time,而不是Event Time,Spark Streaming没有提供对Event Time的支持。

Structured Streaming提供了基于事件时间处理数据的功能,如果数据包含事件的时间戳,就可以基于事件时间进行处理。

④可靠性保障

两者在可靠性保证方面都是使用了checkpoint机制。checkpoint通过设置检查点,将数据保存到文件系统,在出现出故障的时候进行数据恢复。

在Spark Streaming中,如果我们需要修改流程序的代码,在修改代码重新提交任务时,是不能从checkpoint中恢复数据的(程序就跑不起来),是因为spark不认识修改后的程序了。

在Structured Streaming中,对于指定的代码修改操作,是不影响修改后从checkpoint中恢复数据的。

⑤ sink

二者的输出数据(写入下游)的方式有很大的不同。

Spark Streaming中提供了foreachRDD()方法,通过自己编程实现将每个批的数据写出。

Structured Streaming自身提供了一些sink(Console Sink、File Sink、Kafka Sink等),只要通过option配置就可以使用;对于需要自定义的Sink,提供了ForeachWriter的编程接口,实现相关方法就可以完成。

总体来说,Structured Streaming有更简洁的API、更完善的流功能、更适用于流处理。而spark streaming,更适用于与偏批处理的场景。

关于大数据学习,Spark Streaming 与Structured Streaming的却别对比,以上就为大家做了简单的介绍了。目前,Spark Streaming仍有用武之地,而Structured Streaming也在快速发展当中,二者需根据实际需求考虑使用。成都加米谷大数据,专业大数据培训机构,大数据开发、数据分析与挖掘,本月新班开课,课程大纲及试学视频可联系客服领取!
热点排行
推荐文章
立即申请>>