Spark实时(二):StructuredStreaming编程模型

文章目录

StructuredStreaming编程模型

一、基础语义

二、事件时间和延迟数据

三、​​​​​​​​​​​​​​容错语义


StructuredStreaming编程模型

一、基础语义

Structured Streaming处理实时数据思想是将实时数据看成一张没有边界的表,数据源源不断的追加到这张表中,这可以让我们能像处理批数据一样处理实时数据。如下图所示,每条实时数据到来之后都对应“无界表”中的一条数据追加到表中。

以WordCount为例,Spark会针对每次增量的数据进行计算,将结果输出出来,如下图所示: 

 

注意:StructuredStreaming并不会将每次输出的数据物化存储起来,而是每次计算都将结果状态保存起来,下个批次计算是基于当前批次数据和状态值进行计算,计算完成后会把当前批次数据丢弃。 

二、​​​​​​​​​​​​​​事件时间和延迟数据

对于流式数据处理时,我们更希望使用事件时间evnet time来对数据进行窗口划分,事件时间一般嵌入到数据本身,是数据中的一个列,例如:Iot设备产生实时数据时,我们对这些数据进行处理时,我们希望使用事件产生的时间,即:event time,而不希望使用Spark接收这些事件的时间进行窗口划分数据分析。Structured Streaming中事件时间是实时增量数据行中的一个列值,Structured Streaming可以针对这个列值进行窗口划分对数据进行聚合处理,这种基于事件时间的窗口划分可以将流数据处理的更加精准。

此外,Structured Streaming 基于事件时间处理数据时还支持对延迟数据的处理,当有延迟数据到达时,Structured Streaming可以基于事件时间找到对应的窗口对数据进行更新。从Spark2.1开始支持Watermarking,Watermarking允许用户指定数据延迟时间的阈值,并根据阈值来自动清理旧状态。

三、​​​​​​​​​​​​​​容错语义

Structured Streaming提供端到端恰好消费一次的语义。在Structured Streaming中有Source、Sink和执行引擎来可靠的跟踪数据处理的进度,其原因是将处理的每个流数据源都看做有偏移量(类似Kafka offset)来跟踪流中的数据位置,Structured Streaming使用checkpoint和WAL预写日志机制来记录每次触发处理的数据偏移范围,Sink在内部也被设计为幂等操作,在发生故障时Structured Streaming根据以上来确保端到端精准消费一次的语义。

在Structured Streaming中向HDFS中写入数据、ForeachSink自定义写出(写出需支持幂等写出,如RDBMS写出)已经实现“exactly-once”端到端语义,向Kafka写出、console写出目前不支持“exactly-once”端到端语义。


  • 📢博客主页:https://lansonli.blog.csdn.net
  • 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
  • 📢本文由 Lansonli 原创,首发于 CSDN博客🙉
  • 📢停下休息的时候不要忘了别人还在奔跑,希望大家抓紧时间学习,全力奔赴更美好的生活✨

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/49449.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

年化22.8%的单因子分析:基于Alphalens做可转债全市场数据的单因子分析(附python代码+全量数据)

原创文章第597篇,专注“AI量化投资、世界运行的规律、个人成长与财富自由"。 因子分析是量化研究的基本技能之一。通过因子分析,找出有效的因子,通过相关性去重后,就可以通过机器学习、线性回归等方法把因子组合起来&#xf…

Linux基础学习day1

1.Linux系统介绍 1.常见的操作系统 1.Windows(NT内核)不开源 2.ubantu(linux内核) 3.ios(unix内核)不开源 4.鸿蒙(兼容linux内核) 5.Android(linux内核&#xff09…

STM32(七):STM32指南者-通信实验

目录 一、基本概念通讯基本概念1、串行和并行2、同步通讯与异步通讯3、全双工、半双工、单工4、通讯速率 USART基本概念1、串口通讯基本概念2、物理层3、协议层4、指南者的串口USART I2C基本概念SPI基本概念 二、USART串口实验前期准备1、安装安装 USB 转串口驱动_CH3402、野火…

Git之repo sync -l与repo forall -c git checkout用法区别(四十九)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

微信各平台历史版本含下载地址大全( 安卓 | Windows | MAC )

微信-windows-版本历史 https://github.com/tom-snow/wechat-windows-versions/releases 微信-windows-x86版本历史 https://github.com/tom-snow/wechat-windows-versions-x86/releases 微信安卓版本历史 https://github.com/DJB-Developer/wechat-android-history-version…

Apache DolphinScheduler 3.2.2 版本正式发布!

Apache DolphinScheduler 3.2.2 版本正式发布! 近日,Apache DolphinScheduler 发布了 3.2.2 版本。此版本主要基于 3.2.1 版本进行了 bug 修复,新增若干特性,并进行了众多改进和 Bug 修复,以及文档修复等。 &#x1…

电路学习——经典运放电路之滞回比较器(施密特触发器)(2024.07.18)

参考链接1: 电子设计教程29:滞回比较器(施密特触发器) 参考链接2: 滞回比较器电路详细分析 参考链接3: 比较器精髓:施密特触发器,正反馈的妙用 参考链接4: 比较器反馈电阻选多大?理解滞后效应,轻…

【iOS】进程与多线程

目录 前言进程和线程进程和线程的区别多线程的意义时间片概念 线程的生命周期线程池的运行策略自旋锁和互斥锁自旋锁互斥锁自旋锁和互斥锁区别原子属性 iOS多线程技术方案 前言 学习此文:iOS多线程 在平时的iOS开发中,多线程是我们常会遇到的&#xff0…

新手教学系列——如何在MacOS 10.13.6(老系统)手动安装和配置Pyenv

前言 对于使用老旧系统(如MacOS 10.13.6)的用户来说,安装和管理Python版本可能会遇到一些挑战。特别是由于Homebrew不再支持老系统,许多软件安装变得困难重重。本文将详细介绍如何在这样的环境下手动安装和配置Pyenv,…

BGP选路之Next Hop

原理概述 当一台BGP路由器中存在多条去往同一目标网络的BGP路由时,BGP协议会对这些BGP路由的属性进行比较,以确定出去往该目标网络的最优BGP路由,然后将该最优BGP路由与去往同一目标网络的其他协议路由进行比较,从而决定是否将该最优BGP路由放进P路由表中…

数据代理实践

1,什么事数据代理机制? 通过访问 代理对象的属性 来向该访问 目标对象的属性 数据代理机制的视线需要依靠,Object.defineProperty()方法 2, ES6新特性: 在对象中的函数/方法 :function是可以省略的 &l…

宝塔国际版Docker Manager 3.4获取镜像列表报错解决办法

宝塔国际版安装Docker Manager 3.4,遇到获取镜像列表的时候报错。 解决办法 找到:/www/server/panel/plugin/docker/docker_main.py文件 替换函数utc_to_local 原代码 # UTC时间转换为时间戳def utc_to_local(self, utc_time_str, utc_format=%Y-%m-%dT%H:%M:%S):

机器学习(五) -- 无监督学习(1) --聚类2

系列文章目录及链接 上篇:机器学习(五) -- 无监督学习(1) --聚类1 下篇: 前言 tips:标题前有“***”的内容为补充内容,是给好奇心重的宝宝看的,可自行跳过。文章内容被…

2个案例区分是平行眼还是交叉眼,以及平行眼学习方法

案例一: 交叉眼:看到凸出的“灌水”,是交叉眼。PS:看的时候,眼是斗鸡眼,眼睛易疲劳 平行眼:看到凹陷的“灌水”,是平行眼。PS:看的时候眼睛是平视,不容易疲…

springboot校园车辆管理系统-计算机毕业设计源码63557

校园车辆管理系统 摘 要 校园车辆管理系统是当前高校校园管理中的一个重要方面,其有效管理和调度对于提升校园的运行效率和管理水平至关重要。本论文基于Spring Boot框架开发了一套校园车辆管理系统,系统主要包括用户和管理员两大角色,涵盖…

Sprint Boot 2 核心功能(二)

数据访问 1、SQL 1.1、数据源的自动配置-HiKariDataSource 1.1.1、导入JDBC场景 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jdbc</artifactId> </dependency>数据库驱动&#xff1…

什么是湖仓一体?湖仓一体解决了什么问题?

目录 一、数据仓库&数据湖&湖仓一体概念辨析 1.数据仓库&#xff08;Data Warehouse&#xff09; 2.数据湖&#xff08;Data Lake&#xff09; 3.湖仓一体&#xff08;Lakehouse&#xff09; 二、湖仓一体的优点 三、湖仓一体要解决什么问题? 四、结语 随着当前大数据…

在spyder中使用arcgis pro的包

历时2天终于搞定了 目标&#xff1a;在anconda中新建一个arcpyPro环境&#xff0c;配置arcgispro3.0中的arcpy 一、安装arcgispro3.0 如果安装完之后打开arcgispro3.0闪退&#xff0c;就去修改注册表&#xff08;在另一台电脑安装arcgispro遇到过&#xff09; 安装成功后可…

Python3网络爬虫开发实战(1)爬虫基础

一、URL 基础 URL也就是网络资源地址&#xff0c;其满足如下格式规范 scheme://[username:password]hostname[:port][/path][;parameters][?query][#fragment] scheme&#xff1a;协议&#xff0c;常用的协议有 Http&#xff0c;https&#xff0c;ftp等等&#xff1b; user…

如何借助生成式人工智能引领未来的科技狂潮

如何借助生成式人工智能引领未来的科技狂潮 1. 生成式AI的现状1.1 技术基础1.1.1 深度学习1.1.2 生成对抗网络&#xff08;GANs&#xff09;1.1.3 变分自编码器&#xff08;VAEs&#xff09; 1.2 主要应用1.2.1 语言模型1.2.2 图像生成1.2.3 音频与视频生成 2. 未来的发展趋势2…