理解Spark中Structed SparkStreaming概念与使用

本文深入介绍了Spark的Structured Streaming,一种基于Spark SQL引擎的流处理框架,提供低延迟、容错性和精确一次的保证。通过使用数据集/数据帧API,用户可以表达流式计算,类似于批处理。Structured Streaming内部采用微批处理或连续处理模式,支持事件时间窗口、流到批处理连接等操作。文章还涵盖故障恢复语义、水印处理、流式数据源、窗口操作、连接操作和流去重等内容,展示了如何实现高效、可靠的流处理解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.Overview

结构化流是一种基于Spark SQL引擎的可扩展且容错的流处理引擎。 您可以像表达静态数据的批处理计算一样表达流式计算。

Spark SQL引擎将负责逐步和连续地运行它,并在流数据继续到达时更新最终结果。 您可以使用Scala,Java,Python或R中的数据集/数据框架API来表示流聚合,事件时间窗口,流到批处理连接等。

计算在同一优化的Spark SQL引擎上执行。 最后,系统通过检查点和预写日志确保端到端的一次性容错保证。 

简而言之,Structured Streaming提供快速,可扩展,容错,端到端的精确一次流处理,而无需用户推理流式传输。

 

在内部,默认情况下,结构化流式查询使用微批处理引擎进行处理,该引擎将数据流作为一系列小批量作业处理,从而实现低至100毫秒的端到端延迟和完全一次的容错保证。 

但是,自Spark 2.3以来,我们引入了一种称为连续处理的新型低延迟处理模式,它可以实现低至1毫秒的端到端延迟,并且具有至少一次保证。 无需更改查询中的数据集/数据框操作,您就可以根据应用程序要求选择模式。

 

2.Quick Example

假设希望维护从侦听TCP套接字的数据服务器接收的文本数据的运行字数开始。 让我们看看如何使用Structured Streaming。

import org.apache.spark.sql.functions._

import org.apache.spark.sql.sparkSession
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杨鑫newlfe

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值