跳到主内容
快讯直播
AI智模界
AI 词典

数据湖表格式:给训练数据装一台行车记录仪

一句话定义:数据湖表格式(Table Format)是铺在 Parquet、ORC 这类文件之上的一层元数据账本,让对象存储里散落的一堆文件,表现得像一张支持事务的数据库表。最常被提到的两个实现是 Apache Iceberg 和 Delta Lake。

为什么需要它。早期数据湖的用法很朴素:在对象存储上建个目录,往里丢文件,目录名就是表名。问题随之而来——想改一行,得重写整个文件;两个人同时写,后写完的覆盖先写完的;任务写到一半挂了,留下半截脏数据;想看看上周三这份数据长什么样,只能靠之前手动复制的目录备份。

它怎么解决。核心思路是数据文件永不修改(immutable):每次写入都生成全新的数据文件,然后用一次原子操作替换一份清单文件(manifest 或 transaction log),声明这一版快照(snapshot)由哪些文件组成。

打个比方:图书馆更新藏书,不是把书全部重印一遍,而是换掉目录卡片。换卡片是瞬间完成的动作,所以读者翻目录时,要么看到旧版,要么看到新版,绝不会看到换了一半的卡片。

这份"卡片"带来三件事:

  • 事务(ACID):一批写入要么全部生效,要么全部不生效,不留半成品。
  • 快照与时间旅行(time travel):每个快照都有编号和时间,可以按快照号或时间点查询历史版本。
  • 模式演进(schema evolution):加列、改列名、调类型通常不必重写历史数据。

和相邻概念的区别

概念管什么有没有快照和事务
Parquet / ORC单个文件内部怎么编码压缩没有
目录约定 + Hive Metastore这张表在哪个路径基本没有
Iceberg / Delta Lake哪些文件属于这一版表有

一句话:文件格式管"一本书怎么排版",表格式管"书架上现在有哪些书、上一版又有哪些书"。

对从业者的意义。AI 训练数据是持续长出来的:新爬一批、新标一批、清洗规则又迭代一版。没有表格式时,"这个模型到底用哪版数据训的"只能靠人肉记笔记;有了快照,训练任务可以锁死一个 snapshot ID 去读,实验可复现,指标对不上时能顺着快照往回查。清洗脚本写错了,可以回滚到出问题之前的那一刻,而不是连夜重跑全量。

对普通职场人,最直观的好处是报表也能"回看上周三的数据长什么样",不必再因为上游覆盖而无法对账。

各家实现的功能边界和用法差异不小,具体以官方文档为准。

AI 生成本文由 AI 基于公开信息自动生成,仅供参考。