Spark Structured Streaming源码扩展--(六)流式Shuffle支持多分区及侧边输出

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

一、概述

上一篇文章,我们介绍了Spark Continous连续处理模式,已有流式shuffle的实现,分析了绑定的物理计划和内部创建的writer、reader。
在本文,我们将介绍如何扩展Spark Continous流式shuffle源码,以支持多个下游分区、侧边输出、自动分析侧边输出的依赖、删除ReceiverEpochMarker机制提高并发性能等原理。

Spark 流处理源码版本迭代较快,为了避免应用扩展功能与Spark源码过于耦合,增加Spark版本升级难度,拟在DataSourceV2Strategy处,增加策略的绑定,实现的大部分逻辑仍放在应用层代码org.apache.spark包路径下。

二、核心实现:CoordinatorEndpoint及SlaveEndpoint端点

在下图中DataCleanRDD表示数据清理数据(即Shuffle前数据), 通过我们设计的shuffle数据流向,被分发到api聚合流、host聚合流各分区对应queue中:
(除下图流式数据分发外,流式Dataset#repartition方法也可以通过DataSourceV2Strategy直接绑定这个shuffle策略,流式group by算子执行前的shuffle操作同理)

在这里插入图片描述

1、创建CoordinatorEndpoint分区位置存储端点

在driver增加ContinuousShuffleCoo

Flink 侧输出流(SideOutput) ProcessFunction 的 side outputs 功能可以产生多条流,并且这些流的数据类型可以不一样。一个 side output 可以定义为 OutputTag[X]对象,X 是输出流的数据类型。process function 可以通过 Context 对象发射一个事件到一个或者多个 side outputs。注意:OutputTag是如何根据旁路输出流包含的元素类型typed的。✨可以通过以下几种函数发射数据到旁路输出。当使用旁路输出时,首先需要定义一个。来标识一个旁路输出流。 阅读详情

相关推荐

Spark Structured Streaming源码分析--()Continuous连续处理模式流式Shuffle

文章目录一、概述二、 原生ContinuousCoaleseExec介绍1、创建ContinuousCoaleseEexc2、ContinuousCoaleseEexc执行的操作 一、概述 本文主要介绍Spark SQL中,Repartition算子绑定,重点介绍Spark 2.4.0 流处理Continous模式新增的流式Repartition和Shuffle操作,为后续源码提供一些理论基础。...

LS_ice的专栏 1347

spark_structured_streaming

spark_structured_streaming

Spark四大核心能力选型指南:从数据形态到落地实践

Apache Spark并非工具集合,而是一个统一计算引擎,其真正价值体现在对结构化、流式、机器学习和图计算四类数据场景的抽象支持。理解Spark SQL的Catalyst优化器原理、Structured Streaming的微批机制、MLlib的分布式训练范式以及GraphX的状态管理边界,是避免技术误用的前提。这些能力的技术价值在于将业务语义(如延迟要求、数据分布、团队技能)精准映射为执行计划与资源调度策略。典型应用场景包括实时风控中的分钟级聚合、电商推荐的流式特征更新、金融图谱的社区发现等。本文基于生

csobhtdx34120的博客 448

FromSparkStreamingtoStructuredStreaming.pdf

本期分享主题:From Spark Streaming to Structured Streaming 讲师:敌珐@E-MapReduce 内容提纲1. Spark Streaming 1.1 Overview1.2 DStream Model1.3 Failure Recovery1.4 Consistency Semantics1.5 DStream API1.6 Evaluation2. Google Dataow 2.1 Overview2.2 Points2.3 More3. Structured Streaming 3.1 DStream Pains3.2 Structured Streaming Overview3.3 Program Model3.4 Output Mode3.5 API3.6 Window with Event Time3.7 EventTime Watermark3.8 UDF Stateful Operator3.9 Query Planning3.10 Consistency Semantics3.11 Continuous Processing3.12 Evaluation3.13 Operational Features4. Reference

spark 结构化流文件输出流和kafka输出

结构化流 文件输出流 kafka输出spark输出模式

lixia0417mul2的博客 558

Flink 实践:侧输出

什么是侧输出 在flink处理数据流时,我们经常会遇到这样的情况:在处理一个数据源时,往往需要将该源中的不同类型的数据做分割处理,如果使用 filter算子对数据源进行筛选分割的话,势必会造成数据流的多次复制,造成不必要的性能浪费;flink中的侧输出就是将数据流进行分割,而不对流进行复制的一种分流机制。flink的侧输出的另一个作用就是对延时迟到的数据进行处理,这样就可以不必丢弃迟到的数据。 侧...

k_wzzc的博客 5814

spark多路输出

实现的功能:按不同的key写到不同的文件名 其中data为kv型的Rdd data.partitionBy(new HashPartitioner(4)).saveAsHadoopFile(outputPath, classOf[String], classOf[String], classOf[RDDMultipleTextOutputFormat]) R

数据技术控 1690

基于Spark Structured Streaming的新闻日志实时分析系统架构与实现

大数据实时处理是应对海量、持续生成数据的关键技术,其核心在于构建低延迟、高吞吐的数据流水线。流处理引擎通过窗口聚合、状态管理等原理,实现对数据流的连续计算,从而支撑实时监控、智能推荐等业务场景。Spark Structured Streaming作为主流引擎之一,提供了声明式API与端到端的精确一次语义保障,有效平衡了开发效率与数据准确性。在新闻浏览日志分析这类典型应用中,结合Kafka消息队列进行数据缓冲与解耦,并利用MySQL和Redis分层存储计算结果,能够构建出从数据采集、实时计算到可视化展示的完整

weixin_34248705的博客 401

Spark+Hive中间件

特性UDFUDAFUDTF全称用户自定义函数用户自定义聚合函数用户自定义表生成函数输入输出关系一行进,一行出多行进,一行出一行进,多行出功能类比类似于 SQL 中的普通函数类似于 SQL 中的聚合函数类似于 SQL 中的EXPLODE()函数常见场景数据格式化、字段拼接、大小写转换、计算等求和、求平均、求最大值、计数、Top N 等解析JSON数组、Map键值对展开、一行拆多行继承类开发难度简单复杂中等。

2301_76854264的博客 1049

Spark大数据处理入门:从核心概念到实战调优全解析

分布式计算引擎是现代大数据处理的核心技术,它通过将海量数据任务拆分并行执行,解决了单机处理能力不足的瓶颈。其原理基于将计算逻辑分发到集群节点,并汇总结果,从而实现了对TB级数据的高效分析。这一技术为数据密集型应用提供了基础支撑,广泛应用于实时监控、用户行为分析和机器学习训练等场景。Apache Spark作为领先的统一计算引擎,通过RDD和DataFrame等编程模型,封装了分布式计算的复杂性,并借助Catalyst优化器与Tungsten执行引擎提升性能。本文聚焦于Spark的部署模式、编程抽象及性能调优

weixin_33724059的博客 376

基于Spark 2.2的新闻网实时分析系统:从架构设计到毕业实践

大数据实时处理是当前数据技术领域的核心方向,其核心原理在于对持续产生的数据流进行即时计算与分析,而非传统的批量离线处理。这项技术的价值在于能够为业务提供秒级甚至毫秒级的决策支持,广泛应用于实时监控、风险预警、个性化推荐等场景。Structured Streaming作为Spark生态中流处理的关键组件,通过将无界数据流抽象为动态表,并利用微批处理引擎,实现了高吞吐、低延迟且具备精确一次语义的处理能力。在工程实践中,结合Kafka作为高吞吐数据源,以及Redis和HDFS构建分层存储,可以高效搭建端到端的实时

weixin_33898876的博客 856

基于Spark 2.2的实时新闻分析系统:从架构设计到生产级调优

实时数据处理是现代大数据技术的核心应用之一,其核心原理在于对连续不断的数据流进行即时计算与分析,以实现低延迟的业务洞察。在技术实现上,流处理系统通过高吞吐数据接入、窗口聚合与状态管理等机制,将动态数据转化为实时价值。Apache Spark Structured Streaming作为成熟的流处理框架,提供了基于DataFrame API的声明式编程模型,支持精确一次语义(Exactly-Once)和容错状态管理,极大地简化了实时数据管道的开发。其技术价值体现在能够支撑实时监控、实时推荐、舆情分析等多种高价

weixin_30642869的博客 409

Spark工具选型实战指南:场景驱动的API分层决策

Apache Spark不是单一工具,而是基于统一计算引擎的多层API体系——从底层RDD、中层DataFrame/Dataset,到上层Spark SQL与Structured Streaming。其核心原理在于Catalyst优化器与Tungsten执行引擎对结构化数据的自动优化,技术价值体现在开发效率、类型安全与资源可控性的动态平衡。典型应用场景包括ETL清洗、实时告警、机器学习特征工程及即席查询分析。实际选型必须回归数据Schema稳定性、团队语言栈(PySpark/Scala)、计算模式(批/流)

diaolouan9546的博客 360

如何快速上手Apache Spark官方文档中文版:从安装到第一个应用 [特殊字符]

Apache Spark官方文档中文版是学习和使用Spark大数据处理框架的终极指南。这个项目将Apache Spark 2.4.4官方文档完整翻译成中文,为中文开发者提供了便捷的学习路径。无论你是大数据新手还是经验丰富的工程师,这份中文文档都能帮助你快速掌握Spark的核心概念和实用技巧。本文将带你从零开始,快速上手Apache Spark官方文档中文版,完成从环境配置到第一个Spark应用的完

gitblog_00646的博客 330

基于Spark的实时新闻大数据分析系统:从架构设计到集群部署实战

实时流处理是处理连续数据流的核心技术,其核心原理在于将无界数据流切分为微批次或进行连续处理,以实现低延迟的数据计算与分析。这项技术对于需要即时响应的业务场景具有重要价值,例如实时监控、实时推荐和实时风控等。在工程实践中,Apache Spark凭借其统一的批流处理API和强大的分布式计算能力,成为构建实时处理系统的热门选择。通过其Structured Streaming模块,开发者可以基于DataFrame抽象以声明式方式编写流处理作业,并利用检查点机制保障处理语义。本文聚焦于一个典型应用场景——新闻网实时

weixin_34321753的博客 310

基于Spark Streaming的实时数据处理系统:从Lambda架构到新闻热榜实战

实时数据处理是应对海量数据即时分析需求的核心技术,其原理在于将连续产生的数据流进行微批次或逐事件处理,而非传统批处理的离线计算模式。这项技术的价值在于能够实现业务指标的秒级监控与决策支持,广泛应用于实时监控、风险控制、个性化推荐等场景。本文聚焦于构建一个新闻网实时分析系统,通过整合Spark Streaming、Kafka、Flume和Redis等组件,详细阐述了如何实现实时热门新闻排行、用户地域分布统计等关键功能。文中深入探讨了状态管理、偏移量处理等工程实践要点,并提供了针对数据倾斜、状态恢复等典型问题的

weixin_30599769的博客 353

一文通关Apache Spark

入门到源码,全面掌握大数据处理引擎

dinl_vin的博客 664

基于Spark 2.2的新闻网实时分析系统:从架构设计到工程实践

实时数据处理是应对海量、高速数据流的核心技术,其核心原理在于将连续到达的数据进行低延迟的连续计算与分析。这项技术的价值在于能够从动态数据中即时提取洞察,支撑实时监控、智能推荐、风险预警等关键业务场景。在技术实现层面,Apache Spark凭借其统一的批流处理API和成熟的生态,成为构建实时分析系统的首选框架之一。特别是其Structured Streaming模块,通过将流数据抽象为无限表,使得开发者能够使用熟悉的DataFrame API进行流处理开发,大幅降低了工程门槛。本文聚焦于一个典型的实时分析应

cmff98425的博客 456
上一篇: Spark Structured Streaming源码分析--(五)Continuous连续处理模式流式Shuffle
下一篇: Flink源码分析--(一)异步I/O访问外部数据:AsyncWaitOperator
LS_ice
博客等级 码龄16年 70粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值