Flink框架:批处理和流式处理与有界数据和无界数据之间的关系

本文重点

从数据集的类型来看,数据集可以分为有界数据和无界数据两种,从处理方式来看,有批处理和流处理两种。一般而言有界数据常常使用批处理方式,无界数据往往使用流处理方式。

有界数据和无界数据

有界数据有一个明确的开始和结束。在执行任何计算之前,可以通过获取所有数据来处理有界流。处理有界流不需要有序摄取,因为有界数据集总是可以排序的。有界流的处理也称为批处理。

无界数据有开始但是没有结束。无界数据流必须被连续处理,即事件在被接收后必须被迅速处理。不可能等待所有输入数据到达,因为输入是无限的,并且不会在任何时间点完成。处理无限数据通常需要以特定的顺序接收事件,例如事件发生的顺序,以便能够推断结果的完整性,这往往也是处理无界数据困难的地方,因为事件的接收顺序和事件的发生顺序往往是不一致的。

有界数据集和无界数据集只是一个相对的概念,主要根据时间的范围而定,可以认为一段时间内的无界数据集其实就是有界数据集,同时有界数据也可以通过一些方法转换为无界数据。例如一台插座设备上报一年的电量数据,其本质上应该是有界的数据集,可是当我们把它一条一条按照产生的顺序发送到流式系统,通过流式系统对数据进行处理,在这种情况下可以认为数据是相对无界的。对于无界数据也可以拆分成有界数据进行处理,例如一台设备不停的上报电量数据,如果按照年或月进行切割,此时我们就可以将数据看成是有界的。

从以上分析我们可以得出结论:有界数据和无界数据其实是可以相互转换的。有了这样的理论基础,对于不同的数据类型,业界也提出了不同的能够统一数据处理的计算框架。比如Apache Spark框架和Apache Flink框架。

 比如Spark通过批处理模式来统一处理有界和无界的数据集,对于无界数据是将数据按照批次切分成微批 (有界数据集)来进行处理。Flink 通过流处理模式来统一处理不同类型的数据集。将有界数据也按照无界数据进行处理,最终将批处理和流处理统一在一套流式引擎中,而需要部署两套。

批处理和流处理

在大数据领域批处理和流式处理常常被认为是两种不同的任务。

批处理是有界数据流处理的范例。在这种模式下,你可以选择在计算结果输出之前输入整个数据集,这也就意味着你可以对整个数据集的数据进行排序、统计或汇总计算后再输出结果。假设数据处理产线有多个处理操作,批处理需要将所有数据处理完成之后才会进入下一个操作。如图所示,这100条数据经过处理A处理之后,才会将处理结果输入到下一个处理B,如果A没有处理完毕,那么B就只能等待。

流处理正相反,其涉及无界数据流。至少理论上来说,它的数据输入永远不会结束,因此程序必须持续不断地对到达的数据进行处理。如图所示,数据A经过处理B处理完毕之后,就可以放到下一环节被处理C处理,此时新的数据数据B不会闲下来,又处理新来的数据B了,也就是说处理B和处理C可以同时加工不同的数据,处理完就把数据往下扔,然后接着处理上一环节的数据。

注意:并不是说无界数据就一定要流式处理,也不一定有界数据就一定批式处理。我们前面说过了有界数据和无界数据其实是可以相互转换的,如果我们想要批量处理我们就将其转变为有界数据,如果我们想要流式处理我们就将其转变为无界数据就好了。

应用场景

1. 批处理的应用场景

批处理通常用于处理大量的历史数据,例如,企业的销售数据、财务数据等。批处理可以帮助企业进行数据分析、数据挖掘、预测分析等工作,从而帮助企业做出更好的决策。

2. 流处理的应用场景

流处理通常用于处理实时数据,例如,股票行情、网络流量、传感器数据等。流处理可以帮助企业进行实时监控、实时预警、实时决策等工作,从而帮助企业更好地应对突发事件和变化。

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

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

相关文章

虚拟列表react-virtualized使用(npm install react-virtualized)

1. 虚拟化列表 (List) // 1. 虚拟化列表 (List)import { List } from react-virtualized; import react-virtualized/styles.css; // 只导入一次样式// 示例数据 const list Array(1000).fill().map((_, index) > ({id: index,name: Item ${index},description: This is i…

IT+开发+业务一体化:AI驱动的ITSM解决方案Jira Service Management价值分析(文末免费获取报告)

本文来源atlassian.com,由Atlassian全球白金合作伙伴、DevSecOps解决方案提供商-龙智翻译整理。 无论是支持内部员工、处理突发事件还是批准变更申请,服务团队的每一分钟都至关重要。您的企业是否做好了充分准备? 许多企业仍然依赖传统的IT服…

leetcode刷题日记——167. 两数之和 II - 输入有序数组

[ 题目描述 ]: [ 思路 ]: 题目要求求数值numbers中的和为 target 的两个数的下标最简单的思路就是暴力求解,两两挨个组合,但时间复杂度为O(n2),不一定能通过因为数组为非递减,那我们可以使用双指针&#…

【Leetcode-Hot100】盛最多水的容器

题目 解答 目的是求面积最大,面积是由两个下标和对应的最小值得到,因此唯一的问题就是如何遍历这两个下标。我采用begin和end两个变量,确保begin是小于end的,使用它们二者求面积,代码如下: 很不幸 出错了…

dify文本生成图片

安装Stability 授权 Stability AI - Developer Platform Stability AI - Developer Platform 创建智能体 模型要选好点的,要不可能会生成失败。

前端开发中的问题排查与定位:HTML、CSS、JavaScript(报错的解决方式)

目录 1.html 1. 结构错误调试:标签未正确嵌套 2. 语法问题调试:缺失引号 3. 断点调试:动态生成内容时的 JavaScript 错误 4. 网络调试:资源加载错误 5. 性能调试:页面加载性能 总结: 2.CSS 1. 定位…

Spring MVC 重定向(Redirect)详解

Spring MVC 重定向(Redirect)详解 1. 核心概念与作用 重定向(Redirect) 是 Spring MVC 中一种客户端重定向机制,通过 HTTP 302 状态码(默认)将用户浏览器重定向到指定 URL。 主要用途&#xf…

《深入探秘:分布式软总线自发现、自组网技术原理》

在当今数字化浪潮中,分布式系统的发展日新月异,而分布式软总线作为实现设备高效互联的关键技术,其自发现与自组网功能宛如打开智能世界大门的钥匙,为多设备协同工作奠定了坚实基础。 分布式软总线的重要地位 分布式软总线是构建…

eplan许可证的用户权限管理

在电气设计领域,EPLAN软件以其强大的功能和灵活性而备受用户青睐。然而,随着企业规模的扩大和团队人数的增加,如何确保软件使用的安全与效率成为了一个重要的问题。EPLAN许可证的用户权限管理功能为此提供了完美的解决方案。本文将详细介绍EP…

pytorch小记(十七):PyTorch 中的 `expand` 与 `repeat`:详解广播机制与复制行为(附详细示例)

pytorch小记(十七):PyTorch 中的 expand 与 repeat:详解广播机制与复制行为(附详细示例) 🚀 PyTorch 中的 expand 与 repeat:详解广播机制与复制行为(附详细示例&#xf…

Databricks: Why did your cluster disappear?

You may found that you created a cluster many days ago, and you didnt delete it, but it is disapear. Why did this happen? Who deleted the cluster? Actually, 30 days after a compute is terminated, it is permanently deleted automaticlly. If your workspac…

C语言【输出字符串中的大写字母】

题目 输出字符串中的大写字母 思路&#xff08;注意事项&#xff09; 纯代码 #include<stdio.h> #include<string.h>int main(){char str[20], ans[20];fgets(str, sizeof(str), stdin);str[strcspn(str, "\n")] \0;for (int i 0, j 0; i < strl…

基于队列构建优先级抢占机制的LED灯框架设计与实现

文章目录 前言一、LED 显示框架概述1. 框架结构图2. 基本机制 二、核心结构与接口设计1. 状态命令结构2. 状态项结构3. LED框架配置结构4. LED运行控制器 三、LED框架逻辑流程1. 初始化逻辑2. 优先级抢占判断与处理逻辑3. 执行队列命令并处理tick4. 队列为空时的默认状态回滚 四…

PyQt6实例_A股财报数据维护工具_解说并数据与完整代码分享

目录 1 20250403之前的财报数据 2 整个项目代码 3 工具使用方法 3.1 通过akshare下载 3.2 增量更新 3.3 查看当前数据情况 3.4 从数据库中下载数据 视频 1 20250403之前的财报数据 通过网盘分享的文件&#xff1a;财报三表数据20250403之前.7z 链接: https://pan.ba…

React 之 Redux 第三十一节 useDispatch() 和 useSelector()使用以及详细案例

使用 Redux 实现购物车案例 由于 redux 5.0 已经将 createStore 废弃&#xff0c;我们需要先将 reduxjs/toolkit 安装一下&#xff1b; yarn add reduxjs/toolkit// 或者 npm install reduxjs/toolkit使用 vite 创建 React 项目时候 配置路径别名 &#xff1a; // 第一种写法…

Spring Boot 中集成 Knife4j:解决文件上传不显示文件域的问题

Spring Boot 中集成 Knife4j&#xff1a;解决文件上传不显示文件域的问题 在使用 Knife4j 为 Spring Boot 项目生成 API 文档时&#xff0c;开发者可能会遇到文件上传功能不显示文件域的问题。本文将详细介绍如何解决这一问题&#xff0c;并提供完整的解决方案。 Knife4j官网…

OpenCV 图形API(17)计算输入矩阵 src 中每个元素的平方根函数sqrt()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 描述 计算数组元素的平方根。 cv::gapi::sqrt 函数计算每个输入数组元素的平方根。对于多通道数组&#xff0c;每个通道会独立处理。其精度大约与内置的 …

大学论文书写规范与格式说明

大学论文书写规范与格式说明 (适用于人文社科、理工科通用框架) 一、论文整体结构 1. 基本组成部分 封面 包含论文标题、作者姓名、学院/专业、学号、指导教师、提交日期等(按学校模板填写)。 中英文摘要 中文摘要:300~500字,概述研究背景、方法、结论与创新点,末尾附…

C# 串口通信

1. 导入 using System.IO.Ports;2. 初始化定义 SerialPort sp new SerialPort(); // 设置串口 sp.PortName "COM3"; // 串口 sp.BaudRate 9600; // 波特率 sp.Parity Parity.None; // 校验位 sp.DataBits 8; // 数据位 sp.StopBits StopBits.One; // 停…

android14 keycode 上报 0 解决办法

驱动改完后发现上报了keycode=0 04-07 13:02:33.201 2323 2662 D WindowManager: interceptKeyTq keycode=0 interactive=false keyguardActive=true policyFlags=2000000 04-07 13:02:33.458 2323 2662 D WindowManager: interceptKeyTq keycode=0 interactive=false key…