曾经爆火的「流批一体」现在怎么样了?

2021年和2022年,曾经有一个概念在整个数据开发方向传播,不管是懂和不懂的人,都能扯上一两句。那就是大家耳熟能详的「流批一体」。

时至今日,已经很少有人再提起这个话题,这个概念在21、22年很多面试中也会被面试官问到,经常有同学问我这个问题,该怎么回答?

今天咱们稍微聊聊这个话题。

当时这个概念被很多人提起,大概的意思就是这样:期望一套代码能同时在批处理和流处理中运行。

这个概念神奇在哪呢?这个概念最初被Flink社区提起,因为期望能用Flink Batch 和 Flink Streaming一套代码同时做离线计算和实时计算,能解决数据的一致性、口径等等问题。

这么想当然没什么问题,是个很好的设想。但是前提是Flink能够同时承担离线和实时两条链路的高效/稳定/低成本的运行。

小数据量下/小业务规模/小数据规模下,都没有什么问题。因为简单,线上随便整,问题也不会很多。

但是,一旦你的业务/数据规模变得很大,这是行不通的,所以真正能做到落地的公司和场景屈指可数。这也是至今,这个概念不再被广泛提及的主要原因之一。

是不是这个方向没什么搞头了?不是的。

其实大家可以换个思路,如果说在计算引擎上不能做到统一,那么我们在数据侧做到统一不就行了,我们统一不了计算引擎,但是我们统一数据出口。

所以,这个流批一体这个小领域,在业界分化出来了两类做法。

第一类,和Kappa架构相互融合,把数据出口统一在实时侧;

在业界的头部公司有一些比较核心的业务场景,是不能接受离线/实时数据的差异性,或者容忍度很低。所以,业界的公司会在某个业务场景借鉴Kappa架构的设计,逻辑在实时侧进行统一,同时向离线进行同步。说简单点就是依赖Kafka->Hdfs这条同步链路,这条链路在业界头部公司很成熟很稳定,久经考验,这也为这种做法能够实施打下了坚实的基础。

这种做法,可以保证数据的逻辑是收口的,数据的下游在做复杂计算时不易产生口径上的误差。这种做法在大公司特定业务场景目前已经较为普遍,方案成熟,链路上实时计算侧需要重点保障,离线数据一边会变成分钟/小时级可见的数据,时效性也会大大提升。

第二类,统一存储引擎和计算引擎,同时能跑流和批计算;

能做到这件事的公司国内一只手都数得过来,做法就是自研存储引擎,能够同时支持流读(主要对接Flink SQL)也可以支持批读(主要对接Spark SQL),在语法上引擎侧做到高度一致。保证数据是同源的,也能解决一部分流批一体的问题。(数据同源很重要,这是解决差异性的第一步,如果你的数据不同源,那么未来数据有差异是迟早的问题)

但是我们必须得明白,在实时计算和离线计算中的语义有明显的不同,这个不同主要就是由于「状态」引起的。所以,只能在特定的场景中实现流批一体,不具有广泛适用性。

时至今日,这个方向仍然在悄无声息的发展,可能就在某家大公司的某个场景,大受裨益,有很多非常好的生产实践。

这也是为什么大家现在去面试,别人问你「流批一体」的真正落地,你欲言又止,思绪仿佛回到3年前,想说的很多,但是无从谈起...

184e292ca2d220cc8b22407f56ac39b9.png300万字!全网最全大数据学习面试社区等你来!

如果这个文章对你有帮助,不要忘记 「在看」 「点赞」 「收藏」 三连啊喂!

792a04e9c7fd6f170099fe2bf6916d8d.png

364edd3ff9a50fb823a19eea7145168f.jpeg

全网首发|大数据专家级技能模型与学习指南(胜天半子篇)

互联网最坏的时代可能真的来了

我在B站读大学,大数据专业

我们在学习Flink的时候,到底在学习什么?

193篇文章暴揍Flink,这个合集你需要关注一下

Flink生产环境TOP难题与优化,阿里巴巴藏经阁YYDS

Flink CDC我吃定了耶稣也留不住他!| Flink CDC线上问题小盘点

我们在学习Spark的时候,到底在学习什么?

在所有Spark模块中,我愿称SparkSQL为最强!

硬刚Hive | 4万字基础调优面试小总结

数据治理方法论和实践小百科全书

标签体系下的用户画像建设小指南

4万字长文 | ClickHouse基础&实践&调优全视角解析

【面试&个人成长】社招和校招的经验之谈

大数据方向另一个十年开启 |《硬刚系列》第一版完结

我写过的关于成长/面试/职场进阶的文章

当我们在学习Hive的时候在学习什么?「硬刚Hive续集」

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

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

相关文章

USACO 2024年1月比赛 铜组 BALANCING BACTERIA

第三题&#xff1a;BALANCING BACTERIA 标签&#xff1a;思维、差分 题意&#xff1a;给定 n n n个数&#xff0c; a 1 , a 2 , a 3 . . . a n a_1,a_2,a_3...a_n a1​,a2​,a3​...an​&#xff0c;每次操作 可以选择数字 L &#xff08; 1 < L < n &#xff09; L…

【linux】vim多行操作命令

文章目录 1. vim多行同时修改2. vim复制/移动多行3. vim删除多行4. vim设置缩进空格 回顾&#xff1a;vi/vim常用命令 1. vim多行同时修改 &#xff08;1&#xff09; ctrl v &#xff08;2&#xff09; 按 下箭头&#xff0c;选择多行 &#xff08;3&#xff09; shift i,…

软考笔记--信息系统开发方法(上)

信息系统是一个极其复杂的人机交互系统&#xff0c;它不仅包含计算机技术&#xff0c;通信技术和网络规划以及其他的工程技术&#xff0c;而且&#xff0c;它还是一个复杂的管理系统&#xff0c;需要管理理论和方法的支持&#xff0c;因此&#xff0c;与其他工程项目相比&#…

自然语言转SQL的应用场景探索

自然语言转SQL的应用场景探索 1. 自然语言转sql有哪些解决方案2. 自然语言转sql有哪些应用场景3. 自然语言转sql在智能制造领域有哪些应用场景 1. 自然语言转sql有哪些解决方案 自然语言转SQL&#xff08;NL2SQL&#xff09;是一个涉及自然语言处理&#xff08;NLP&#xff09…

JNI教程之数组操作

1. 创建数组&#xff1a;New[type]Array /** 新建数组 length: the array length. RETURNS: Returns a Java array, or NULL if the array cannot be constructed. */ jbyteArray javaArray env->NewByteArray(1024*1024);New[PrimitiveType]Array RoutinesArray TypeNewB…

[嵌入式AI从0开始到入土]15_orangepi_aipro欢迎界面、ATC bug修复、镜像导出备份

[嵌入式AI从0开始到入土]嵌入式AI系列教程 注&#xff1a;等我摸完鱼再把链接补上 可以关注我的B站号工具人呵呵的个人空间&#xff0c;后期会考虑出视频教程&#xff0c;务必催更&#xff0c;以防我变身鸽王。 第1期 昇腾Altas 200 DK上手 第2期 下载昇腾案例并运行 第3期 官…

单片机学习笔记---红外遥控(外部中断)

目录 红外遥控简介 硬件电路 基本发送与接收 NEC编码​​​​​​​ 遥控器键码 复习外部中断和定时器 红外遥控简介 红外遥控是利用红外光进行通信的设备&#xff0c;由红外LED将调制后的信号发出&#xff0c;由专用的红外接收头进行解调输出 通信方式&#xff1a;单工…

WebGL中开发科学数据可视化应用

WebGL在科学数据可视化领域有广泛的应用&#xff0c;可以用于呈现和解释复杂的科学数据。以下是在WebGL中开发科学数据可视化应用时的一些建议&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 1.选择合…

C++开发基础之函数的参数类型高级用法

前言 当涉及到高级参数传递方式时&#xff0c;有几种常见的技术可以在 C 中使用。下面是对每种技术的详细介绍&#xff0c;并附带示例说明&#xff1a; 1. 指针的引用&#xff08;Reference to Pointer&#xff09; 指针的引用允许在函数内部修改指针本身&#xff0c;而不仅…

BERT模型中的input_ids和attention_mask参数

一、概述 1.1 input_ids 在BERT模型及其衍生体中&#xff0c;输入文本首先经过一个分词处理流程&#xff0c;其中文本被细分为单词或子单词&#xff08;subwords&#xff09;&#xff0c;每个分词随后映射到一个唯一的整数标识符。这些标识符组成了所谓的input_ids数组&#x…

2、电源管理入门之开机详解

目录 1. 硬件上电 2. ATF运行 3. Linux启动 3.1 内核启动start_kernel 3.2 平台启动setup_arch 3.4 DTS初始化psci_dt_init 3.5 系统rest创建kernel_init线程 3.6 SMP初始化smp_init 3.7 PSCI接口psci_cpu_on 3.8 SMC返回secondary_entry 系统开机牵扯到:“我是…

记录人工智能领域的人、事、社区

曾梦想执剑走天涯&#xff0c;我是程序猿【AK】 目录 简述概要关注人物OpenAI团队成员 关注事件2015年2016年2017年2018年2019年2020年2021年2022年2023年2024年 关注社区OpenAITensorFlowPyTorchMIT Technology ReviewReddit Machine LearningIEEE Transactions on Neural Net…

java 使用documents4j将XML转为pdf文件的方式

1.背景&#xff1a; 通过spire.doc.free将word转换成PDF时存在缺陷&#xff1a;只能获取前3页。获取全文另外需支付费用。 2.解决办法 使用documents4j&#xff0c;documents4j会保留原word文件中更多的样式&#xff0c;如修订模式下的差异化字体颜色、文档右侧修订记录等。 …

信息学奥赛一本通1188:菲波那契数列(2)

1188&#xff1a;菲波那契数列(2) 时间限制: 1000 ms 内存限制: 65536 KB 提交数: 70272 通过数: 26790 【题目描述】 菲波那契数列是指这样的数列: 数列的第一个和第二个数都为1&#xff0c;接下来每个数都等于前面2个数之和。 给出一个正整数a&#xff0c;要求菲…

Android Studio基础(下载安装与简单使用)

1、搭建Android开发平台 1.1 Android Studio 下载地址及版本说明 Android 开发者官网&#xff1a; https://developer.android.com/index.html&#xff08;全球&#xff0c;需科学上网&#xff09; https://developer.android.google.cn/index.html&#xff08;国内&#xff…

oracle INSERT 批量插入写法

直接采用mysql那种INSERT批量插入语句的写法&#xff0c;会报 SQL 错误 [933] [42000]: ORA-00933: SQL 命令未正确结束 它可以使用以下方法来批量插入数据&#xff1a; 使用INSERT ALL语句&#xff1a;可以在一条INSERT语句中插入多个记录。使用这种方法&#xff0c;您可以为…

十三、集合进阶——单列集合 及 数据结构

单列集合 及 数据结构 13.1 集合体系结构13.1.2 单列集合1. Collection2.Collection 的遍历方式迭代器遍历增强for遍历Lambda表达式遍历 3.List集合List集合的特有方法List集合的遍历方式五种遍历方式对比 4.数据结构1).栈2).队列3&#xff09;数组4&#xff09;链表小结5&…

PyTorch – 逻辑回归

data 首先导入torch里面专门做图形处理的一个库&#xff0c;torchvision&#xff0c;根据官方安装指南&#xff0c;你在安装pytorch的时候torchvision也会安装。 我们需要使用的是torchvision.transforms和torchvision.datasets以及torch.utils.data.DataLoader 首先DataLoa…

Tomcat是如何打破“双亲委派“机制的

目录 一、什么是双亲委派机制? 二、什么情况下我们需要破坏双亲委派模型?

营销系统黑名单优化:位图的应用解析 | 京东云技术团队

背景 营销系统中&#xff0c;客户投诉是业务发展的一大阻碍&#xff0c;一般会过滤掉黑名单高风险账号&#xff0c;并配合频控策略&#xff0c;来减少客诉&#xff0c;进而增加营销效率&#xff0c;减少营销成本&#xff0c;提升营销质量。 营销系统一般是通过大数据分析建模…