ai-infra-interview-305

第 170 题:大规模数据集的metadata管理?parquetarrow

题目

大规模数据集的metadata管理?parquetarrow


完整讲解

一、大规模数据集 Metadata 需求

海量样本(图像、文本、多模态)需要索引、过滤、分片与采样,不能只靠「列目录」;Metadata 存样本路径、标签、长度、分组等,便于按条件过滤、按 rank shard、做 bucket 与负采样等。格式要可扩展、可并行读、支持列式过滤

二、Parquet、Arrow 的作用

Parquet:列存格式,schema 清晰、支持按列读取与谓词下推(只读需要的列、按条件过滤),压缩友好;适合存「样本路径 + 标签 + 长度」等表格型 metadata,训练时按 shard 或按条件读 Parquet 得到本 rank 的样本列表,再按 path 或 key 拉数据。Arrow:内存列式格式与 IPC/文件格式,零拷贝、多语言、与 Pandas/Spark 等互通;可做「内存中的 metadata 表」、或 Arrow 文件做 metadata 存储,训练时用 Arrow 读入过滤与 shard,再驱动 DataLoader。二者常一起用:Parquet 做持久化、Arrow 做内存表示与处理;或直接用 Arrow 的 Parquet 读写。

三、工程要点

Metadata 与数据分离:大文件或对象存数据,Parquet/Arrow 存索引与属性;DataLoader 先读 metadata(或按需读列)、再按 path/key 取数据。大规模时 metadata 也分片(多 Parquet 文件),按 rank 或按 key 范围读对应分片。


面试要点


记忆要点

  1. Metadata = 索引、过滤、shard;Parquet = 列存、过滤友好;Arrow = 内存列式、零拷贝。
  2. 数据与 metadata 分离;metadata 用 Parquet 持久、Arrow 处理。
  3. 大规模时 metadata 也分片;DataLoader 先读 metadata 再取数据。
返回模块 返回总览