Spark 2.0产生了一个新的流处理框架Structured Streaming(结构化流),它是一个可伸缩的、容错的流处理引擎,构建在Spark SQL引擎之上。使用StructuredStreaming可以在静态数据(Dataset/DataFrame)上像批处理计算一样进行流式计算。随着数据的不断到达,Spark SQL引擎会增量地、连续地对其进行处理,并更新最终结果。
简单来讲就是DSteam是基于RDD的DSteam,Structured Streaming是基于Dataset(DataFrame)的。
默认情况下,Structured Streaming使用微批处理引擎将数据流作为一系列小批次作业进行处理,从而实现端到端的延迟低至100毫秒。而自Spark 2.3以来,引入了一种新的低延迟处理模式,称为连续处理,它将端到端的延迟进一步降低至1毫秒。对于开发者来说,不需要考虑是流式计算还是批处理,只要以同样的方式编写计算操作即可,Structured Streaming在底层会自动实现快速、可伸缩、容错等处理。
一、简单使用
添加依赖:
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql-kafka-0-10_2.12</artifactId>
<version>3.1.2</version>
</dependency>
测试代码:
/**
* @author: ffzs
* @Date: 2021/10/10 下午1:21
*/
object StructuredStreaming {
def main(args: Array[String]): Unit