Apache Paimon多模态数据湖实践:从结构化到非结构化的技术演进

在近期的 Streaming Lakehouse Meetup · Online EP.2|Paimon × StarRocks 共话实时湖仓 直播中,Apache Paimon PMC 成员/阿里云数据湖资深工程师叶俊豪带来了关于 Paimon 多模态数据湖的深度技术分享。

随着大模型训练对数据规模与多样性的要求不断提升,传统以批处理为中心的数据湖架构已难以满足 AI 工作负载对实时性、灵活性和成本效率的综合需求。特别是在推荐系统、AIGC 等典型场景中,工程师既要高频迭代结构化特征,又要高效管理图像、音频、视频等非结构化数据。面对这一挑战,Paimon 作为新一代流式数据湖存储引擎,正通过一系列底层创新,构建面向 AI 原生时代的统一数据基础设施。

一、结构化场景下的“列变更”困境

在推荐、广告等 AI 应用中,特征工程是一个持续演进的过程。例如,电商团队可能今天新增“用户近7日点击品类分布”,明天又加入“跨端行为一致性评分”。这种动态列变更导致“列爆炸”问题:表结构频繁扩展,而历史数据需与新特征对齐。

然而,已知的解决方案在此场景下仍然存在一些问题:

  • 主键表 partial-update:虽支持按主键更新部分列,但其基于 LSM 树的实现会在写入频繁时产生大量小文件,查询性能急剧下降;Compaction 虽可合并文件,却带来数倍的临时存储开销。

  • odps 存新特征值 + Join 拼接方案:将新特征写入独立表,查询时通过主键 Join 合并。看似避免了重写,但 Join 操作本身在 PB 级数据上开销巨大,且难以优化。

  • Append 表 + MERGE INTO:SQL 语法简洁,但底层仍需重写整个数据文件。对于每天增量达 PB 级的训练集,全量重写不仅成本高昂,还显著拖慢特征上线周期。

这些方案本质上都未能解耦“列”的物理存储,导致灵活性与效率不可兼得。

二、Paimon 的列分离架构:以全局 Row ID 为核心

Paimon 提出了 列分离存储架构,其核心是引入 全局唯一且连续的 Row ID。每行数据在首次写入时被分配一个在整个表生命周期内不变的 ID,且每个数据文件内的 Row ID 是连续的,元数据会记录该文件的起始 Row ID。

这一设计带来两个关键能力:

1. 精准定位任意行:通过 Row ID 可直接定位到具体文件及偏移;

2. 跨文件自动关联:当查询涉及多个列时,系统能根据 Row ID 范围自动将分散在不同文件中的列数据在存储层合并。

例如,当新增“用户兴趣标签”列时,Paimon 仅需写入一个包含该列与对应 Row ID 的新文件,无需修改原始特征文件。查询时,引擎透明地将两组文件按 Row ID 对齐合并,无需 SQL 层 Join,也无需重写历史数据。这种机制将列变更的存储成本从 O(N) 降至 O(ΔN),极大提升了特征迭代效率,同时节省了数十倍的存储空间。

三、迈向多模态:Blob 数据类型的三大突破

AI 训练不再局限于结构化特征。AIGC、多模态大模型等场景要求数据湖能高效处理图像、短视频、长音频等非结构化数据。这类数据具有两大特点:体积差异大(几 MB 到数十 GB)、访问稀疏(训练时通常只读取片段)。

传统列式格式(如 Parquet)将多模态数据与结构化字段混存,导致即使只查用户 ID,也需加载整个含视频的大文件,I/O 效率极低。

Paimon 引入 Blob 数据类型,实现三大突破:

1. 物理分离存储:Blob 列独立成文件,与结构化数据完全解耦。查询结构化字段时,Blob 文件完全不参与 I/O,避免资源浪费。

2. 多引擎统一抽象:无论使用 Spark、Flink、Java SDK 还是 Python 客户端,均可通过标准的BYTESBINARY或 BLOB 类型定义 Blob 字段,接口一致,降低接入成本。

3. blob-as-descriptor 机制:针对超大非结构化数据(如十几GB的视频/日志文件),传统计算引擎(如Flink/Spark)无法将其全量加载到内存中处理。为此,系统引入了 blob-as-descriptor 机制——它是一种协议,通过记录数据在外部存储(如OSS)中的位置、文件路径、起始偏移和长度等元信息,将实际数据读取任务交给下游系统按需流式加载。这样避免了内存溢出,实现了大文件高效入湖。

四、生产验证与未来演进

当前,Paimon Blob 已在淘宝、天猫等核心业务中实现大规模落地,每天有近 10PB 的多模态数据(如视频、音频、图像)通过 Blob Descriptor 协议高效写入 Paimon 湖,避免了 Flink 或 Spark 将大文件全量加载到内存的问题。然而,在实际使用中仍面临三大关键挑战:

  • 数据重复与删除问题,用户常因多次上传相同内容导致大量冗余(预估约 1PB/天的重复数据),亟需高效的去重与删除机制;

  • 小文件碎片化问题,频繁的小规模写入产生海量微小 Blob 文件,严重影响读取性能和存储效率;

  • 点查召回延迟高,缺乏对主键(如 UID)或向量特征的快速索引支持,难以满足毫秒级实时查询需求。

针对上述问题,团队已规划清晰的演进路径。

  • 点查性能优化方面,推进热 ID 下推能力,并构建统一的全局索引框架,同时支持标量索引(如字符串、数值)和向量索引(用于 AI 召回),其中基础版标量索引预计本月在开源 Master 分支可用。

  • 多模态数据管理方面,启动两项核心功能:

    • 一是基于 Deletion Vector + 占位符 的逻辑删除方案,在 Compaction 阶段安全清理重复或无效数据;

    • 二是开发 Blob Compaction 机制,自动合并小文件以提升读性能和存储密度。

此外,团队还前瞻性地提出跨表 Blob 复用的构想——多个表引用同一视频时仅存储一份物理数据,虽因涉及多表状态同步与一致性保障而技术难度较高,但已列入长期优化方向。整体目标是打造一个高效、紧凑、可快速检索的多模态数据湖底座,支撑未来 AIGC 与智能推荐等场景的规模化应用。

结语

Paimon 的技术演进,从结构化场景的列分离,到多模态数据的 Blob 抽象,每一项创新都源于真实业务痛点,并反哺于工程效率的提升。它不再只是“存储数据的地方”,而是成为 AI 原生时代的数据操作系统——高效、灵活、智能。

Paimon 将长期、持续且大力投入全模态数据湖建设,全面支持图像、音视频等非结构化数据的高效入湖、去重、合并与毫秒级点查。通过 Deletion Vector、Compaction 优化和全局索引等能力,Paimon 正构建面向 AI 时代的统一数据底座。作为开放湖表格式。

阿里云 DLF 在云上提供全托管的 Paimon 存储服务,支持 Paimon 的智能存储优化与冷热分层。同时,DLF 提供安全、开放、支持全模态数据的一体化 Lakehouse 管理平台,深度融入兼容其他例如 Iceberg、Lance 等主流格式,无缝对接 Flink、Spark 等计算引擎,,为 AIGC 与多模态智能应用提供高性能、低成本、易治理的数据基础设施。

在数据驱动的 AI 时代,基础设施的价值,最终要体现在对业务效率的实质性推动上。 Paimon 的实践,正为整个行业提供一条通往高效、统一、智能数据湖的新路径。

▼ 「实时计算 Flink 版」 ▼

复制下方链接或者扫描左边二维码

即可免费试用阿里云Serverless Flink,体验新一代实时计算平台的强大能力!

了解试用详情:https://free.aliyun.com/?productCode=sc

免费试用

  • 阿里云DLF提供商业版Paimon服务,新用户免费试用100GB存储,1000CUH

复制领取 >> https://free.aliyun.com/?productCode=dlf

  • EMR Serverless StarRocks:2025年9月登顶全球 TPC-H 10TB 性能和性价比榜单,性能比传统 OLAP 引擎提升 3-5 倍,100%兼容开源 StarRocks。

欢迎免费测试 >> https://free.aliyun.com/?searchKey=StarRocks

  • 前往阿里云 EMR 官网开通 Serverless StarRocks 试用并分享体验反馈,晒图可以领取精美礼品:https://x.sm.cn/EDWpX6I


▼ 关注「Apache Flink」 ▼

回复 FFA 2025 获取大会资料


点击「阅原文跳转阿里云实时计算 Flink~

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

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

相关文章

利用多进程提升图表模拟程序的性能

引言 在实时数据处理和图表模拟的领域,程序的响应速度和效率至关重要。特别是当我们处理大量数据并需要实时更新图表时,如何高效地利用系统资源就成为了一个关键问题。今天我们来探讨如何通过多进程来优化一个图表模拟程序的性能。 问题描述 我们有一款图表模拟程序,用于…

基于Java+SpringBoot+SSM儿童医院挂号管理系统(源码+LW+调试文档+讲解等)/儿童医院预约系统/儿童医院就诊管理系统/医院挂号管理系统/儿童医院挂号平台/儿童医院在线挂号

博主介绍 💗博主介绍:✌全栈领域优质创作者,专注于Java、小程序、Python技术领域和计算机毕业项目实战✌💗 👇🏻 精彩专栏 推荐订阅👇🏻 2025-2026年最新1000个热门Java毕业设计选题…

网上租赁系统信息管理系统源码-SpringBoot后端+Vue前端+MySQL【可直接运行】

摘要 随着互联网技术的快速发展,传统租赁行业正逐步向数字化转型。网上租赁系统作为一种高效、便捷的商业模式,能够有效解决传统租赁过程中信息不对称、管理效率低下等问题。该系统通过整合线上资源,为用户提供租赁物品的浏览、下单、支付及管…

总结了 12 个嵌入式项目

前两天有一个读者问我,如果要做嵌入式项目,哪些项目会比较合适,这里总结了 12 个比较有代表性的项目,使用的cpu 也是主流的,推荐给大家,希望对大家学习有所帮助。1. Avem:轻量级无人机飞控项目项…

使用aop切面springmvc后抛出异常一直捕捉不到异常(抛出异常UndeclaredThrowableException类)

WebLogControllerAop这是一个切面处理类,使用的Around处理切面,有异常必须抛出,不然全局异常捕捉不到的 package cn.geg.lifecycle.config;import cn.geg.lifecycle.util.WebLogUtils; import cn.hutool.core.collection.CollUtil; import cn…

在Azure中实现跨订阅的AMPLS自动链接策略

在Azure环境中,管理和自动化资源链接是提升运维效率和确保安全性的关键。特别是在处理不同订阅的资源时,如何高效地实现跨订阅的自动链接是一个常见的挑战。本文将通过一个实际的案例,详细介绍如何利用Azure Policy实现Application Insights与AMPLS(Azure Monitor Private …

Java Web Web足球青训俱乐部管理后台系统系统源码-SpringBoot2+Vue3+MyBatis-Plus+MySQL8.0【含文档】

摘要 足球青训俱乐部管理后台系统的开发旨在解决传统足球青训俱乐部在管理学员信息、课程安排、教练分配等方面效率低下的问题。随着足球运动的普及和青训体系的完善,俱乐部需要一套高效、智能化的管理系统来优化运营流程。传统的人工记录和Excel表格管理方式容易导…

Flask应用中的实例路径问题探讨

引言 在Flask应用程序开发中,实例路径(instance path)是一个经常被忽视但又非常关键的概念。特别是在部署和管理数据库时,如果不正确处理实例路径,可能会导致一系列难以诊断的问题。本文将通过一个真实的案例,详细探讨Flask实例路径的设置和其在生产环境中的影响。 实例…

上班是一场冷静的交易

将上班视作一场冷静的交易,这并非 cynicism,而是一种珍贵的清醒。它像一副坚固的甲胄,保护我们在职业的疆场上不被无谓的情绪流矢所伤,不被暧昧的期望绑架。我们付出标定好的时间、技能与专注,换取等值的报酬、经验与履…

【2025最新】基于SpringBoot+Vue的师生健康信息管理系统管理系统源码+MyBatis+MySQL

摘要 在当今信息化时代,校园健康管理已成为教育机构重点关注的方向之一。传统的师生健康信息管理多依赖纸质记录或分散的电子表格,存在数据冗余、更新滞后、查询效率低下等问题。随着互联网技术的快速发展,构建一个高效、安全、便捷的师生健康…

实时语音识别回声消除技巧

💓 博客主页:借口的CSDN主页 ⏩ 文章专栏:《热点资讯》 实时语音识别回声消除的实战技巧:突破传统局限目录实时语音识别回声消除的实战技巧:突破传统局限 引言:回声消除——语音识别的隐形守护者 现在时&am…

《斯图尔特微积分(下册)》什么时候出?带答案吗???

《斯图尔特微积分》上册中文版9月出版后,读者评价“讲解语言生动,带入生活实际,能够了解数学公式或定理在其他学科的应用。”“良好的阅读体验,美观的版面和由浅入深的内容。”评论和后台常有人私信下册什么时候出?答案…

解决Unity中按钮点击索引问题

在使用Unity开发游戏或应用时,经常会遇到需要为多个按钮动态添加点击事件并传递索引参数的情况。然而,这种操作在C#中可能会导致一些意想不到的问题。本文将通过一个实际例子,解释这些问题及其解决方案。 问题描述 假设我们有一个ScrollView组件,其内容包含多个Button对象…

python开发中虚拟环境配置

在Python开发中,虚拟环境是项目隔离的最佳实践。以下是详细的使用指南: 1. 为什么需要虚拟环境? 依赖隔离:不同项目可以使用不同版本的包避免冲突:防止系统Python环境被污染便于部署:可以精确导出项目依赖团…

【毕业设计】SpringBoot+Vue+MySQL 社区医院信息平台平台源码+数据库+论文+部署文档

摘要 随着信息技术的快速发展,传统社区医院管理模式逐渐暴露出效率低下、信息孤岛等问题。社区医院作为基层医疗服务的重要载体,亟需通过信息化手段优化业务流程,提升服务质量。当前,社区医院在患者档案管理、药品库存监控、预约挂…

Day32 >> 56、合并区间 + 738、单调递增的数字

代码随想录-贪心算法Part5 56、合并区间 class Solution {public int[][] merge(int[][] intervals) {List<int[]> result new LinkedList<>();Arrays.sort(intervals, (x, y) -> Integer.compare(x[0], y[0]));int start intervals[0][0];int end interva…

驾驶认知的本质:人类模式 vs 端到端自动驾驶

在讨论自动驾驶系统时&#xff0c;一个常见的误解是把“开车能力”等同于“驾驶智能”。事实上&#xff0c;人类驾驶与端到端自动驾驶之间的核心差异&#xff0c;并不在于动作精度或感知能力&#xff0c;而在于认知结构与任务管理模式。一、人类驾驶&#xff1a;动态任务管理的…

操作mysql常用python脚本,强到爆炸

1.导出数据库指定表的所有字段(含有字段注释)和数据导出结果如下#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ MySQL数据导出工具 - 修复元组索引问题 """import pandas as pd import pymysql import openpyxl from openpyxl.utils impo…

Python倒计时:优雅的控制台输出

在编程的世界里,倒计时是一个常见的需求,尤其是在游戏、自动化脚本或展示程序中。然而,如何在控制台中优雅地实现一个倒计时效果却是一个有趣的挑战。本文将通过一个实际的例子,展示如何在Python中实现一个在同一行更新的倒计时效果。 问题描述 假设我们有一个简单的倒计…

Java SpringBoot+Vue3+MyBatis IT交流和分享平台系统源码|前后端分离+MySQL数据库

摘要 在信息化时代&#xff0c;IT技术交流与知识分享的需求日益增长&#xff0c;传统的线下交流模式已无法满足开发者和技术爱好者的需求。互联网技术的快速发展为在线交流平台的构建提供了技术基础&#xff0c;使得跨地域、实时互动的技术讨论成为可能。IT交流和分享平台旨在提…