Structured Streaming Programming Guide-2.3.0

本文介绍SparkSQL内置的结构化流处理引擎,一种可伸缩、容错且支持低延迟的流处理方法。文章详细说明了如何利用Dataset/DataFrame API进行流处理,包括单词计数示例,并对比了小批量处理模式与持续处理模式的特点。

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

概览
结构化流是一个可伸缩和容错的流处理引擎,内置在Spark SQL 引擎中。你可以以对静态数据表达批处理计算的方式表达你的流计算。Spark SQL引擎会注意逐渐/持续第运行,并随着流数据不断到来而更新最终的结果。你可以使用Scala/Java/Python/R语言的Dataset/DataFrame API来表达流愈合、event-time windows、stream-to-batch joins等等。计算在相同的优化的Spark SQL引擎上执行。最终,系统通过checkpointing和write ahead logs保证端到端仅仅一次容错。总之,结构化流提供快速、可伸缩、容错、端到端一次流处理,在用户没必要思考流的情况下。
本质上,默认情况下,结构化流查询使用小批量的处理引擎来处理,处理数据流作为一系列小批量任务因而获得100ms的端到端延迟和仅仅一次容错保证。然而,从Spark2.3开始,我们引入了一种新的低延时处理模式,称作持续处理,能够获得端到端低至1ms的延迟和保证至少一次。不需要改变你查询中的Dataset/DataFrame操作,你可以基于你的程序需要选择这种模式。
在这个指南中,我们将带着你浏览编程模式和APIs。我们会主要使用默认的小批量处理模式来解释概念,然后讨论持续处理模式。首先,让我们从一个简单的结构化流查询例子即流式单词计数开始。
Quick Example
我们假设你想维护一个运行的单词计数任务,文本数据来自一个监听TCP socket的数据服务。让我们看下你如何使用结构化流来表达它。你可以看到Scala/Java/Python/R语言的全部代码。如果你下载了Spark,你可以直接运行示例。无论如何,让我们一步一步看下示例,理解它是如何工作的。首先,我们必须引入必要的类,创建一个本地SparkSession,所有功能的起点都和Spark相关。

import org.apache.spark.api.java.function.FlatMapFunction;
import org.apache.spark.sql.*;
import org.apache.spark.sql.streaming.StreamingQuery;
import java.util.Arrays;
import java.util.Iterator;
SparkSession spark=SparkSession.builder().appName("JavaStructuredNetworkWordCount").getOrCreate();

接下来,创建一个streaming DataFrame,代表从监听本地9999端口的服务收到的文本数据,然后转换DataFrame来计算单词计数。

//create DataFrame representing the stream of input lines from connecting to localhost:9999
Dataset<Row> lines=spark.readStream().format("socket").option("host","localhost").option("port",9999).load();
//split the lines into words
Dataset<String> words=lines.as(Encoders.String()).flatMap((FlatMapFunction<String,String>) x -> Arrays.asList(x.split(" ")).iterator(),Encoders.String());
//generate running word count
Dataset<Row> wordCounts=words.groupBy("value").count();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值