功能概述
AI 场景下的数据处理通常涉及大量非结构化数据(图片、音视频、文档等),这些数据往往存储在数据湖中,计算过程需要与数仓或数据湖交互。MaxCompute 通过湖仓一体能力支持通过Object Table和Lance外部表两种方式获取OSS数据湖上的非结构化数据,Object table的元数据管理能力更强,而Lance外部表更强调生态兼容。
MaxCompute作为具备湖仓开放性的湖仓一体平台,也提供使用内置开放存储服务管理和存储非结构化数据的能力,可以将图片、音频、视频、文档等非结构化二进制大对象存储为表中的Blob 数据类型。
Object Table
基于 OSS 上存储非结构化数据的目录创建。MaxCompute 自动抽取文件元信息(大小、名称、属性等)并存入 Object Table 元数据,支持:
感知文件大小,便于控制并发。
按文件名称、属性信息过滤,控制读取范围。
基于文件内容读取函数或 URL信息函数,向 SQL 引擎和 MaxFrame 引擎等非结构化数据引擎提供数据内容或位置信息。
Object Table由MaxCompute 直接对接对象存储OSS,抽取、存储、更新和使用元数据,可以为MaxCompute的SQL引擎和MaxFrame引擎提供深度优化过的非结构化数据管理和访问能力,详见OBJECT TABLE。
Lance 外部表
Lance数据格式在数据湖上,可存储包括非结构化数据、相关的元信息和索引信息等内容,同时也支持存储结构化数据。基于Lance的开放性,各种引擎都可以消费其存储的非结构化数据及相关数据。MaxCompute为了兼容Lance生态而推出Lance外部表。将数据湖上的 Lance 格式数据映射为 MaxCompute 外部表。MaxCompute 支持通过 SQL 引擎和 MaxFrame 引擎直接读写 Lance 中的结构化数据,通过 AI Function 处理非结构化数据,详见Lance外部表(Beta)。
Blob 数据类型
Blob数据类型支持直接在仓内存储非结构化数据,无需依赖外部数据湖即可完成非结构化数据的存储、管理和处理,详见Blob说明和使用示例。特点如下:
读写简单:在 Delta Table 中支持存储最大 5 GB 数据的单个 Blob 字段;
更优的性能:不直接访问Blob列的查询场景下,由于包含大量非结构化数据的Blob列的内容并不在表的文件内,因此不影响查询效率;
支持SQL和MaxFrame:需要访问Blob列的查询场景下,SQL 引擎和 MaxFrame 引擎可基于 Blob 列元信息高并发读取非结构化数据;
深度优化:数据存储在 MaxCompute 内置存储服务上,带宽、IO和安全性有保障。
数据场景及数据来源
基于上述三种非结构化数据存取方式,MaxCompute可通过SQL引擎基于AI Function 处理文本、图片、语音和视频等数据或文件。
AI Function不同模型服务支持的数据场景和数据来源如下表所示,以下模型使用的资源有差异,详见 公共模型列表及适用Quota:
模型服务 | 支持的模型 | 支持的数据场景 | 支持的数据来源 |
MaxCompute 公共模型 |
| 文本 | Object Table(URL 模式) |
MaxCompute远程模型(PAI-EAS 模型服务) | 支持多种预置和自定义模型,包括文本模型和多模态模型 | 语音、视频 | 仅支持Object Table(URL 模式) 需通过 audio 或 video 参数指定数据类型。 |
文本、图片 | Object Table、Blob、Lance 外部表(Binary 模式) 多模态支持图片不需要指定特殊参数 文本模式支持文本不需要指定参数 |
URL 模式:AI Function 通过文件 URL 访问 Object Table 中的数据,适用于语音、视频等大文件场景。
Binary 模式:AI Function 直接读取二进制数据内容,支持 Object Table、Blob 和 Lance 外部表,适用于文本和图片场景。