Spark实时(一):StructuredStreaming 介绍

文章目录

StructuredStreaming 介绍

一、SparkStreaming实时数据处理痛点

1、复杂的编程模式

2、SparkStreaming处理实时数据只支持Processing Time

3、微批处理,延迟高

4、精准消费一次问题

二、StructuredStreaming概述

三、​​​​​​​​​​​​​​StructuredStreaming 特点


Structured Streaming 介绍

一、SparkStreaming实时数据处理痛点

在Spark2.0之前版本中处理流式数据时使用SparkStreaming模块,SparkStreaming模块有一些痛点问题,问题如下:

1、复杂的编程模式

SparkStreaming编写代码是基于DStream进行,DStream底层是RDD操作,编程时需要编写很多DStream API非常不方便。由于不同开发者编码水平不同,导致不同人编写相同业务逻辑程序执行效率也有很大不同。并且在SparkStreaming中编程时需要创建StreamingContext对象,如果想要使用SQL方式对实时数据进行处理,那么还需要创建SparkSession对象,编程方式非常不方便。

2、SparkStreaming处理实时数据只支持Processing Time

在流式数据处理场景中,实时事件产生时会对应一个时间,这个时间一般包含在事件信息中,这个时间我们一般称为“Event Time”(事件时间),实时事件产生后通过网络传输被实时处理框架处理时间我们称为“Processing Time”(处理时间)。由于实时事件通过网络传递时会出现延迟现象,所以计算框架在对数据进行窗口划分时最好使用“Event Time”进行窗口划分,这样数据统计更精准,而SparkStreaming中仅支持“Processing Time”。

3、微批处理,延迟高

SparkStreaming仅支持微批处理数据,很难做到毫秒级数据延迟,延迟高。

4、精准消费一次问题

SparkStreaming中要想实现精准消费一次数据需要自己代码实现,比较麻烦。

二、​​​​​​​​​​​​​​StructuredStreaming概述

Spark2.0版本之后引入StructuredStreaming,StructuredStreaming提供快速、可扩展、容错、端到端exactly-once流处理,Structured Streaming 是基于SparkSQL引擎构建的可扩展且容错的流处理引擎,可以使用SparkSQL方式像处理批数据一样处理实时数据,可以随着实时数据产生持续不断的增量处理数据并且更新最终结果。StructStreaming的出现解决了SparkStreaming流处理的很多痛点。

在内部,默认情况下,Structured Streaming查询使用微批处理引擎,该引擎将数据流处理成一系列小批量作业,从而实现低至100ms的端到端数据延迟和“exactly-once”容错保证。但是在Spark2.3版本之后,Structured Streaming引入了“Continuous Processing”连续处理,可以实现在“at-lest-once”至少一次保证的情况下实现低至1ms的端到端数据延迟,在代码编程层面,我们不需要修改对应的Dataset和DataFrame代码,只需要选择对应的模式即可使用Continuous Processing。

SparkStreaming与Structured Streaming相比较,SparkStreaming是Spark最初的流处理框架,只能使用DStream算子编程,底层是RDD操作,而Structured Streaming是Spark2.0后退出的流式处理框架,处理支持Spark,底层操作是基于DataFrame/Dataset,目前也支持连续流处理模型,但是目前在实验阶段。

三、​​​​​​​​​​​​​​StructuredStreaming 特点

  1. 可以基于Scala/Java/Python语言进行编程。
  2. 可以使用Dataset/DataFrame方式开发流式作业,性能相对于RDD编程高。
  3. 通过Checkpoint和WAL预写日志机制自动实现端到端exactly-once数据仅一次消费语义。
  4. Structured Streaming底层模式是微批处理模式,在Spark2.3后支持连续实时数据处理。

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

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

python使用 tkinter 生成随机颜色

先看效果: 只要不停点击底部的按钮,每次都会生成新的颜色。炫酷啊。 import random import tkinter import tkinter.messagebox from tkinter import Button# todo """ 1. 设置一个按钮,来让用户选择是否显示颜色值 2. 把按钮换成 Label…

《白话机器学习的数学》第2章——学习回归

2.1设置问题 1.机器学习所做的事情正是从数据中进行学习,然后给出预测值。 2.2定义模型 1.一次函数的表达式: 其中θ叫做参数。 在统计学领域,人们常常使用 θ 来表示未知数和推测值。采用 θ加数字下标的形式,是为了防止当未知数…

网络访问(Socket/WebSocket/HTTP)

概述 HarmonyOS为用户提供了网络连接功能,具体由网络管理模块负责。通过该模块,用户可以进行Socket网络通滚、WebSocket连接、HTTP数据请求等网络通信服务。 Socket网络通信:通过Socket(嵌套字)进行数据通信,支持的协议包括UDP核…

【教程】vscode添加powershell7终端

win10自带的 powershell 是1.0版本的,太老了,更换为powershell7后,在 vscode 的集成终端中没有显示本篇教程记录在vscode添加powershell7终端的过程 打开vscode终端配置 然后来到这个页面进行设置 查看 powershell7 的安装位置&#xff…

JDK HttpClient - Java 11 可用的 JDK 内置的 HTTP 客户端

在 Java 应用的开发中,发送 HTTP 请求是一个常见的需求。应用在开发时,通常会使用流行的开源第三方库作为 HTTP 客户端,如 Apache HttpClient 或 OkHttp 等。这里介绍的是 JDK 自带的 HttpClient 实现,Java 11 可用。说到这里&…

物联网主机 E6000:智慧应急领域的创新力量

在当今瞬息万变的世界中,突发事件和紧急情况时有发生。如何迅速、准确地应对这些挑战,保障人民生命财产安全,成为了社会发展的重要课题。而物联网主机 E6000 的出现,为智慧应急领域带来了全新的解决方案。 一、强大的性能与功能 物…

Java学习 - Spring Boot整合 Thymeleaf 实例

什么是 Thymeleaf Thymeleaf 是新一代的 Java 模板引擎,类似于 Velocity、FreeMarker 等传统引擎,其语言和 HTML 很接近,而且扩展性更高; Thymeleaf 的主要目的是将优雅的模板引入开发工作流程中,并将 HTML 在浏览器中…

ROS话题发布与订阅

续上一篇文章。 我们现在在VScode里面加入订阅方的实现。 demo02_sub.cpp #include "ros/ros.h" #include "std_msgs/String.h"/*订阅方实现:1、包含头文件ROS中文本类型 ---> std_msgs/String.h2、初始化ROS节点3、创建节点句柄4、创建订…

中国篆刻艺术孙溟㠭作品《活着》

活着只是一吸一呼之间,在意觉醒之间,在血液流动之间,抛却灵与肉生死,一切都是惘然。妻吴晓蕾题款,甲辰夏月溟㠭于寒舍小窗下刊石。

力扣高频SQL 50题(基础版)第七题

文章目录 力扣高频SQL 50题(基础版)第七题1068. 产品销售分析 I题目说明思路分析实现过程准备数据:实现方式:结果截图:总结: 力扣高频SQL 50题(基础版)第七题 1068. 产品销售分析 I 题目说明 …

PCIe 以太网芯片 RTL8125B 的 spec 和 Linux driver 分析备忘

1,下载 RTL8125B driver 下载页: https://www.realtek.com/Download/List?cate_id584 2,RTL8125B datasheet下载 下载页: https://file.elecfans.com/web2/M00/44/D8/poYBAGKHVriAHnfWADAT6T6hjVk715.pdf3, 编译driver 解压: $ tar xj…

【案例】使用React+redux实现一个Todomvc

About 大家好,我是且陶陶,今天跟大家分享一个redux的todoList案例,通过这个案例能够快速掌握redux的基本知识点🌹 ❤️…❤️…❤️…❤️…❤️…❤️…❤️…❤️…❤️…❤️…❤️…❤️…❤️…❤️…❤️…❤️…❤️…❤️…

Helm部署k8s应用

文章目录 一、概述1、什么是Helm2、特点3、工作流程4、核心概念 二、安装Helm1、二进制版本安装1.1、下载需要的版本1.2、解压1.3、将helm移动到指定路径1.4、验证 三、Helm安装资源顺序四、--set 的格式和限制1、最简单的name/value对2、多个name/value对3、更复杂的表达式4、…

Java语言程序设计基础篇_编程练习题*15.3 (移动小球)

*15.3 (移动小球) 编写一个程序,在面板上移动小球。应该定义一个面板类来显示小球,并提供向左、 向右 、向上和向下移动小球的方法,如图15-24c所示。请进行边界检査以防止球完全移到视线之外 代码展示:编程练习题15_3MoveBall.ja…

鸿蒙OpenHarmony Native API【drawing_pen.h】 头文件

drawing_pen.h Overview Related Modules: [Drawing] Description: 文件中定义了与画笔相关的功能函数 Since: 8 Version: 1.0 Summary Enumerations Enumeration NameDescription[OH_Drawing_PenLineCapStyle] { [LINE_FLAT_CAP], [LINE_SQUARE_CAP], [LINE_ROUND_…

Redis核心技术与实战学习笔记

Redis核心技术与实战学习笔记 最近想沉下心来看下redis,买了蒋德钧老师的《Redis 核心技术与实战》,这里记录一些学习笔记 希望能够坚持下去有想一起学习的童鞋,可以点击跳转到文章尾部获取学习资源,仅供学习不要用于任何商业用途!!! redis知识全景图 …

ROS2入门到精通—— 2-8 ROS2实战:机器人安全通过狭窄区域的方案

0 前言 室内机器人需要具备适应性和灵活性,以便在狭窄的空间中进行安全、高效的导航。本文提供一些让机器人在狭窄区域安全通过的思路,希望帮助读者根据实际开发适当调整和扩展 1 Voronoi图 Voronoi图:根据给定的一组“种子点”&#xff0…

Ubuntu22.04系统安装nodejs 14 保姆级教程

下载软件包 从NodeSource 的官方源下载并安装 Node.js 14.x 版本的软件包,适用于 Debian 和 Ubuntu 系统: curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash - 更新软件源 更新软件源 sudo apt-get update 下载bodejs14 下载nodejs14 sud…

Jenkins卡在等待界面解决方法

一、问题 部署jenkins服务器出现Please wait while Jenkins is getting ready to work。 二、原因分析 jenkins里面文件指向国外的官网,因为防火墙的原因连不上。 三、解决方法 将配置文件里面的url换成国内镜像: (1)修改配…

WEB攻防-通用漏洞-SQL 读写注入-MYSQLMSSQLPostgreSQL

什么是高权限注入 高权限注入指的是攻击者通过SQL注入漏洞,利用具有高级权限的数据库账户(如MYSQL的root用户、MSSQL的sa用户、PostgreSQL的dba用户)执行恶意SQL语句。这些高级权限账户能够访问和修改数据库中的所有数据,甚至执行…