Spark Streaming 对比 Structured Streaming(及其内部的两种模式 MicroBatch Streaming VS Continous Streaming)

一 前言

最近在看 Structured Streaming,先出个简单对比图,Spark Streaming VS Structured Streaming 以及 Structured Streaming内部的两种模式 MicroBatch Streaming VS Continous Streaming。后期深入再做总结和补充。

参考:

《图解Spark核心技术与案例实战》

二 Spark Streaming VS Structured Streaming

对比项

Spark Streaming

Structured Streaming

基于RDD抽象数据

DStream(RDD不同时间点的集合,是RDD抽象数据集合)。DStream上有转换和输出操作

基于DataSet/DataFrame,由于二维表有数据类型,可以做优化,如encoder。它提供了toRDD接口,最终也是基于RDD的Job

扫描二维码关注公众号,回复: 5666908 查看本文章

是否数据结构化

可以非结构化???

结构化数据

Job执行流程

先执行DStreamGraphe+JobScheduler再执行DAGSchedule。 

作业先注册到DStreamGraph,到达批处理时间时,才根据DStreamGraph生成作业并处理该批处理时间内接受的数据

先执行SQL Engine再执行DAGSchedule。

SQL Engine(解析SQL语句,生成logical plan,优化logical plan,生成physical plan,优化physical plan)

是否批处理

是,设置BatchDuration,每个duration的数据流为一批处理源

MicroBatchExecution:是批处理

ContinousExecution:可以单条数据增量式处理(这个目前由触发器的时间决定)

最小延期

0.5~2s

MicroBatchExecution:100ms

ContinousExecution:1ms

处理引擎

Spark Streaming引擎(DStreamGraphe+JobScheduler)+SparkCore引擎(DAGScheduler)

Spark SQL引擎(SQL Engine) + SparkCore引擎(DAGScheduler)

三、 MicroBatch Streaming VS Continous Streaming (In Spark2.4 Structured Streaming)

Structured Streaming处理模式

MicroBatch模式

Continous 模式

统一的用户编程模式

Input => Query => Result => Output(complete/update/append)

-----------------------trigger--------------------------->

统一的设计模式(from code view)

source => transformation/action(catalyst->spark.execute) => sink => output => [checkpoint]

样例代码及对应的代码模块

Trigger类

Trigger.ProcessingTime

Trigger.Continuous

对应execution

MicroBatchExecution

ContinuousExecution

Trigger工作模式

以一定间隔(interval)调度计算逻辑,间隔为0时,上批次调用完成后,立即进入下一批次调用一直调用,退化为类似sparkstreaming的micro batch的流处理

以一定间隔(interval)查看流计算状态

DAG调度次数

等于Trigger 的 interval间隔触发次数

一次,由ContinuousWriteRDD.compute里 while (!context.isInterrupted() && !context.isCompleted()) 完成

目前Spark2.3-2.4支持API

支持API丰富,如汇聚,关联等操作

仅简单的projection类(map,select等)

TriggerExecutor类型

ProcessingTimeExecutor

ProcessingTimeExecutor/

OneTimeExecutor

Databrick测试的延迟级别

100ms

https://databricks.com/wp-content/uploads/2018/03/image6-1.png

1ms

https://databricks.com/wp-content/uploads/2018/03/image5-2.png

Refer to: https://databricks.com/blog/2018/03/20/low-latency-continuous-processing-mode-in-structured-streaming-in-apache-spark-2-3-0.html

     

猜你喜欢

转载自blog.csdn.net/don_chiang709/article/details/84660351
今日推荐