大模型、实时需求推动湖仓平台走向开放
大模型、实时需求高涨
AGI 时代,以 ChatGPT、Midjourney 等为代表的大模型迅速应用加速了 AI 普及,越来越多的企业选择搭建自己的 AI 基础设施,训练行业大模型。
另一方面,企业为了在瞬息万变的市场环境中更快的做出商业决策,正在将数据平台从离线转向实时数据平台。“双十一 ”和春晚直播实时大屏、银行和证券交易行为实时监控、电商和短视频的实时个性化推荐等只是全行业在线化的冰山一角。
AI + 实时,俨然成为了企业数据平台无法避免的技术焦点。那么,如何让企业数据平台拥抱AI+实时的双重能力?
为什么难实现?
对于现阶段的大数据平台和传统数据仓库等企业数据平台,姑且不论同时整合 AI + 实时,单独的 AI 平台或者实时数据平台都不得不通过复杂架构,耗费大量资源和人力来实现。我们不妨先来分别看看现在的 AI 和实时架构是如何实现的。
AI 与数据平台
机器学习和人工智能的模型训练采用结构化数据和非结构化数据。结构化数据价值非常高,数据质量也非常好,因此有些 AI 问题主要基于结构化的数据建模。一个很典型的例子就是银行基于结构化数据,面向个人客户开发的信用评分卡,既有可解释性,又能满足实时的信用评估。
那么,传统数仓的大量结构化数据该如何被用于训练 AI 模型呢?常见的方式是,当机器学习平台需要访问数据集时,需要先通过 JDBC 或者外部表的形式把数据从数据仓库导出到分布式存储中,然后再并行处理这些数据,用以进行模型训练和分析。在大规模数据处理场景中,这种不断导出数据的方式显然是不现实的,因为导出 TB 或者 PB 级别的数据通常得花好几个小时甚至几天的时间,既费力又费时。
在过去几年中,在业界产生广泛影响力的机器学习和 AI 模型几乎都是从非结构化数据中获取的。尽管在传统数据仓库中,可以将非结构化数据视为简单的文本或二进制类型 (TEXT、VARCHAR、BLOB),然而通过这种方式训练AI模型效率低下,同样需要从数据仓库中导出数据后再做建模。
因此,企业逐渐选择数据湖这种更加开放的形态来训练 AI 模型。结构化数据和非结构化数据(文本和图像等)直接进入数据湖,以数据湖开放的存储格式存储,如 ORC 和 Parquet,使用开源工具去直接操作数据。传统数据湖平台通常由 Hadoop 实现,因为 Hadoop 的局限性,比如缺乏事务支持,缺乏很好的数据治理方法等等,数据湖都难免形成数据沼泽。
实时数据平台
传统数据平台不仅在 AI 模型的支持上出现了诸多问题,在实时数据处理方面也面临着极大挑战。
传统数据平台的数据处理流程一般是这样的。首先,从业务系统 CRM、ERP 或者其他数据源把这些业务数据收集过来,然后经过离线数据 ETL 对数据进行数据清洗、数据加工。在这个过程中会涉及数据建模和分层,最终会把加工后的数据提供给 BI 工具,或者写到数据库并推到一个在线服务系统,供用户进行访问,这些用户包括用户、运营人员或管理团队等等。
我们可以发现,即便在没有做实时数据处理的情况下,这样的数据处理链路就已经很冗长了。然而,当我们不解决既有离线问题的情况下就向实时转型,问题将更加复杂。
实时数据是如何处理的?
目前主要采用传统 Lambda 和 Kappa 架构。以 Lambda 架构的实现方法为例,Lambda 以传统的离线数仓为主,然后引入了实时数据的处理链路。T+1 数据仍然是走传统离线数仓链路,然后再加上一个实时的数据链路,再把这些实时数据和离线数据汇总到一起,然后再通过一个服务层提供数据服务,对外提供的服务可能是点查询,也可能是做复杂分析。

离线链路用 Hive/Spark,实时用 Flink。但在实际的落地中,如果需要引入实时查询,可能要再加上 ClickHouse/Drill/Presto;如果需要做数据的离线归档,还需要 Hive;为了满足一些高并发点查询需求,还要再引入了 HBase 和 MySQL。引入这么多产品组件,本质原因还是缺少一个在并发、性能和开放性兼顾的产品。
因此 Lambda 架构并没有从源头上解决传统离线数仓的问题,而是在传统离线数仓上加了一条链路,让整个系统变得更加复杂。数据可能会存两份或者存多份,实时链路和离线链路数据也不统一。除此之外,整个架构维护起来是非常复杂的,学习和开发成本比较高。
如何破局?
为了实现用更丰富的数据源训练 AI 模型,我们以极高的代价将数仓的数据导出后再并行处理;为了实现实时数据处理,我们不惜选择冗长的数据处理链路,造成多份数据和多个计算引擎烟囱林立。这些痛点都将我们引向对一个问题的思考:我们能不能只用一份数据,精简计算引擎?
答案是可以的。
当下,存储和计算的数据无非是结构化、非结构化和流式数据。破局的第一步,就是在数据的存储方面采用开放格式的一份数据,如 Parquet、ORC、Hudi 等。各个计算引擎都使用开放的数据格式(如 ORC 或 Parquet 等),数据以开放文件格式被写入数据平台,之后就能被多个引擎多次直接读取和使用。
有了存储的开放性,在计算引擎方面,我们就可以尽量优化和减少计算引擎的数量,并针对结构化数据、非结构化数据和流式数据,选用各具优势的计算引擎:● 针对流数据的计算,采用常见的 Flink;● 针对非结构化数据和机器学习,可以采用 Spark;● 针对结构化数据,需要兼容开放数据格式,兼顾实时查询、离线分析、高并发和高可用的分析引擎,比如偶数的 OushuDB。

至此,开放格式,一份数据,多个引擎的架构初步形成,这样的“一数多擎”架构形成了可以破局当前企业数据困境的方案——实时湖仓(Realtime Lakehouse)。
“一数多擎”是我们在多个行业的湖仓一体项目落地中不断迭代的最佳实践。企业在选择多个引擎时一定需要基于“化繁为简”和“扬长避短”原则,比如 OushuDB 可以完全实现Hive、Presto、ClickHouse、HBase 等引擎的功能,引入 OushuDB 后就不需要再依赖这些引擎,这样可以极大简化系统开发和运维的复杂度。Flink 擅长流处理,就使用 Flink 做流处理,而不是使用 Flink 来做 SQL 查询,Spark 擅长做机器学习,就使用 Spark 做机器学习,而不是使用 Spark 来做流处理和 SQL 查询。Hive 查询慢,就不必再保留 Hive,可以使用 OushuDB 取代。
开放的“一数多擎”
带来哪些价值?
●首先就是开放本身的价值,开放直接解决了当前数据平台在AI模型训练和实时数据处理过程中多份数据造成的数据冗余和数据不一致。同时,开放的格式让湖仓一体很容易获得最优的 SQL 引擎、ETL、流处理引擎和机器学习引擎的支持。●其次,一份数据整合了非结构化数据和结构化数据存储,图像、文本可以直接用于 AI 模型训练,结构化数据也无需被多次读取、复制和导出。●再次,“一数多擎”必然要求彻底的存算分离架构,让企业湖仓平台不受集群规模的限制,动态扩展集群规模。
● 另外,由于过往实时、离线数据处理链路极其冗长和复杂,造成数据建模、元数据管理、数据治理都难以高效的实施,“一数多擎”精简了不必要的引擎组件,整个架构变得简洁,既为数据建模、数据治理提供了平台基础,又让学习、开发和维护成本都大幅下降。
总结
IDC 调研显示,企业在数字化商业过程中更加关心利用数据和信息来创造自身竞争优势,因此实现底层统一的数据管理是进行上层资产管理和业务决策分析的关键。
以往,由于技术水平的制约和方案的局限性,我们难以实现底层统一的数据管理。因此,为了能用更丰富的数据源训练AI模型,我们以极高的代价将数仓的数据导出;为了实现实时数据处理,我们不惜选择冗长的数据处理链路,造成多份数据和多个计算引擎烟囱林立。
于是才有了我们现在讨论的问题及对应总结出的方案:基于开放的数据格式,存储一份数据,避免数据冗余,有针对性的精选优势引擎组件,通过具备“一数多擎”架构的实时湖仓方案,我们可以同时解决 AI 和实时数据处理在过去所面临的困境,逐步形成完整的企业数智生态。
相关文章:
大模型、实时需求推动湖仓平台走向开放
大模型、实时需求高涨 AGI 时代,以 ChatGPT、Midjourney 等为代表的大模型迅速应用加速了 AI 普及,越来越多的企业选择搭建自己的 AI 基础设施,训练行业大模型。 另一方面,企业为了在瞬息万变的市场环境中更快的做出商业决策&…...
Linux搭建文件服务器
搭建简单文件服务器 基于centos7.9搭建http文件服务器基于centos7.9搭建nginx文件服务器基于ubuntu2204搭建http文件服务器 IP环境192.168.200.100VMware17 基于centos7.9搭建http文件服务器 安装httpd [rootlocalhost ~]# yum install -y httpd关闭防火墙以及selinux [roo…...
跨境商城源码可以支持多种支付方式吗?
跨境商城源码是一种用于建立跨国界电商平台的程序代码。随着全球电商的繁荣发展,越来越多的商家开始寻找一种既安全可靠,又能满足用户需求的支付方式。那么,跨境商城源码是否能够支持多种支付方式呢?让我们深入探讨一下。 1. 支付宝支付 支付…...
机器学习中的核方法
一、说明 线性模型很棒,因为它们易于理解且易于优化。他们受苦是因为他们只能学习非常简单的决策边界。神经网络可以学习更复杂的决策边界,但失去了线性模型良好的凸性特性。 使线性模型表现出非线性的一种方法是转换输入。例如,通过添加特征…...
搜索问答技术学习:基于知识图谱+基于搜索和机器阅读理解(MRC)
目录 一、问答系统应用分析 二、搜索问答技术与系统 (一)需求和信息分析 问答需求类型 多样的数据源 文本组织形态 (二)主要问答技术介绍 发展和成熟度分析 重点问答技术基础:KBQA和DeepQA KBQA(…...
LeetCode2409——统计共同度过的日子数
博主的解法过于冗长,是一直对着不同的案例debug修改出来的,不建议学习。虽然提交成功了,但是自己最后都不知道写的是啥了哈哈哈。 package keepcoding.leetcode.leetcode2409; /*Alice 和 Bob 计划分别去罗马开会。给你四个字符串 arriveA…...
【MyBatisPlus】快速入门、常用注解、常用配置
🐌个人主页: 🐌 叶落闲庭 💨我的专栏:💨 c语言 数据结构 javaEE 操作系统 Redis 石可破也,而不可夺坚;丹可磨也,而不可夺赤。 MyBatisPlus 一、快速入门1.1 引入MyBatisP…...
【USRP】通信之:光通信
光通信: 光通信是使用光信号(通常是红外或可见光信号)在光纤或空气中传输信息的技术。由于光信号的特性,光通信具有非常高的数据传输率和长距离传输能力。以下是光通信的一些关键组件和概念: 光纤: 是由非常纯净的玻璃…...
bpf对内核的观测
目录 1 bpftrace常用命令1.1 列出bpftrace 相关命令的list1. 2bpftrace -e 是执行1.3 查看参数 -lv 2 bpftrace 可以用到的变量3 高级3.1 内置函数3.2 文件系统3.3 内核内存 栈3.4 Malloc 调用 统计3.5 系统调用 brk 的 统计3.6 脚本调用 4 应用5 怎么串联起来呢 bpftrace 总的…...
Tiktok shop api 调试
记录一下调试Tiktok shop api 踩坑记录。 主要是在按官网api上规则和加密生成sign时候一直通不过的问题: 官网地址:https://partner.tiktokshop.com/doc/page/63fd743e715d622a338c4eab 直接贴代码了 import lombok.extern.slf4j.Slf4j;import javax.cr…...
QFSFileEngine::open: No file name specified解决方案
问题 使用QFile类进行文件操作时,报错QFSFileEngine::open: No file name specified。 原因 QFile::open: No file name specified是Qt中的一个错误消息,提示没有指定文件名导致文件无法打开。这个错误通常出现在使用QFile::open()函数时没有提供有效…...
Flappy bird项目
一、功能分析 1、小鸟自动向右滑行 2、按下空格小鸟上升,不按下落 3、显示小鸟需要穿过的管道 4、管道自动左移和创建 5、小鸟和管道碰撞,游戏结束 6、技术 7、 项目框图 8、Ncurses 1)创建窗口界面,移动光标,产…...
高校教务系统登录页面JS分析——西安科技大学
高校教务系统密码加密逻辑及JS逆向 本文将介绍高校教务系统的密码加密逻辑以及使用JavaScript进行逆向分析的过程。通过本文,你将了解到密码加密的基本概念、常用加密算法以及如何通过逆向分析来破解密码。 本文仅供交流学习,勿用于非法用途。 一、密码加…...
Mysql 事务的实现原理
Mysql 里面的事务,满足 ACID 特性,所以Mysql 的事务实现原理,就是InnoDB 是如何保证 ACID 特性的。 ACID A 表示 Atomic 原子性,也就是需要保证多个 DML 操作是原子的,要么都成功,要么都失败。那么…...
使用vscode搭建虚拟机
首先vscode插件安装 名称: Remote - SSH ID: ms-vscode-remote.remote-ssh 说明: Open any folder on a remote machine using SSH and take advantage of VS Codes full feature set. 版本: 0.51.0 VS Marketplace 链接: https://marketplace.visualstudio.com/items?it…...
C# 使用 LibUsbDotNet 实现 USB 设备检测
国庆节回来后的工作内容,基本都在围绕着各种各样的硬件展开,这无疑让本就漫长的 “七天班” ,更加平添了三分枯燥,我甚至在不知不觉中学会了,如何给打印机装上不同尺寸的纸张。华为的 Mate 60 发布以后,人群…...
系统安全分析与设计
系统安全分析与设计(2分) 内容提要 对称加密与非对称加密 加密技术与认证技术 加密技术(只能防止第三方窃听) 讲解地址:对称加密与非对称加密_哔哩哔哩_bilibili 认证技术 骚戴理解:数字签名是用私钥签名…...
UE4 AI群集实现
逻辑就不用说了,就是计算对应图形位置让每个Pawn移动到该位置 因为有时候AI与AI会卡住 所以加上这个Bool为true,以及设置两个AI之间至少隔的距离,设置在一个合理的参数即可 有时候AI群集,AI与AI会比较紧密,可以将Caps…...
机器学习---CNN(创建和训练一个卷积神经网络并评估其性能)下
import numpy as np import matplotlib.pyplot as plt from cnn_operations import cnn_operations as cnn_opr convolutional_neural_network模块: 1. 卷积神经网络类 def __init__(self):# 网络的层数self.n_layers 0# list,网络中的各层self.layers…...
2021-arxiv-Prefix-Tuning- Optimizing Continuous Prompts for Generation
2021-arxiv-Prefix-Tuning- Optimizing Continuous Prompts for Generation Paper:https://arxiv.org/pdf/2101.00190.pdf Code:https://github.com/XiangLi1999/PrefixTuning 前缀调优:优化生成的连续提示 prefix-tunning 的基本思想也是想…...
C++实现分布式网络通信框架RPC(3)--rpc调用端
目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中,我们已经大致实现了rpc服务端的各项功能代…...
安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件
在选煤厂、化工厂、钢铁厂等过程生产型企业,其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进,需提前预防假检、错检、漏检,推动智慧生产运维系统数据的流动和现场赋能应用。同时,…...
【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密
在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...
React19源码系列之 事件插件系统
事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...
屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!
5月28日,中天合创屋面分布式光伏发电项目顺利并网发电,该项目位于内蒙古自治区鄂尔多斯市乌审旗,项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站,总装机容量为9.96MWp。 项目投运后,每年可节约标煤3670…...
三体问题详解
从物理学角度,三体问题之所以不稳定,是因为三个天体在万有引力作用下相互作用,形成一个非线性耦合系统。我们可以从牛顿经典力学出发,列出具体的运动方程,并说明为何这个系统本质上是混沌的,无法得到一般解…...
JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作
一、上下文切换 即使单核CPU也可以进行多线程执行代码,CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短,所以CPU会不断地切换线程执行,从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...
GruntJS-前端自动化任务运行器从入门到实战
Grunt 完全指南:从入门到实战 一、Grunt 是什么? Grunt是一个基于 Node.js 的前端自动化任务运行器,主要用于自动化执行项目开发中重复性高的任务,例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...
Linux 中如何提取压缩文件 ?
Linux 是一种流行的开源操作系统,它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间,使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的,要在 …...
django blank 与 null的区别
1.blank blank控制表单验证时是否允许字段为空 2.null null控制数据库层面是否为空 但是,要注意以下几点: Django的表单验证与null无关:null参数控制的是数据库层面字段是否可以为NULL,而blank参数控制的是Django表单验证时字…...
