首批通过分布式安全可靠测评,为关键业务系统打造
数据湖概述
更新时间:2026-07-02 18:41:33
OceanBase 支持通过**外部表(External Table)和外部目录(External Catalog)**访问外部数据,涵盖文件型数据(CSV / Parquet / ORC)、Hive / Iceberg 湖表,以及 MaxCompute(ODPS)等数据源。
您可以在 OceanBase 中查询、分析存储在对象存储、HDFS 或 MaxCompute 等外部系统中的数据,并与内表进行联邦分析。
说明
数据湖相关能力以 MySQL 模式为主;Catalog 能力当前仅 MySQL 模式支持。具体语法与版本边界以 700.reference 下 SQL 参考文档为准;接入步骤详见本目录各子文档。
OceanBase 当前支持的数据湖能力主要包括:
- 湖表格式访问(Hive、Iceberg,经 External Catalog)
- 外部文件格式访问(CSV、Parquet、ORC)
- 外部 Catalog 接入(ODPS Catalog;HMS Catalog)
- 外部存储访问(本地、OSS、S3、HDFS 等)
- 外部数据查询、部分写入与导出
- 外部表和外部目录管理
数据湖访问模型
OceanBase 访问外部数据时,涉及以下几个层次:
- 存储层:数据实际存放位置,例如 OSS、S3、HDFS、本地文件系统。
- 文件格式层:数据文件的编码方式,例如 Parquet、ORC、CSV。
- 湖表格式层:表的组织与元数据管理方式,例如 Iceberg、Hive。
- Catalog 层:外部元数据服务,例如 HMS、REST、FILESYSTEM(Iceberg)、ODPS Catalog。
- 访问层:通过外部表或 External Catalog 将外部数据纳入 OceanBase SQL 查询体系。
MaxCompute(ODPS)属于外部数仓服务,通过 ODPS Catalog 或 ODPS 外部表(PROPERTIES (TYPE = 'ODPS' ...))接入,不属于 Iceberg/Hive 同类湖表格式。
支持的数据湖格式
湖表格式(Lake Table Format)
| 格式 | 说明 | 接入方式 | 说明 |
|---|---|---|---|
| Apache Iceberg | 开源表格式 | External Catalog(HMS / REST / FILESYSTEM 等) | 只读查询为主;写入能力因 Catalog 类型与版本而异,详见 通过 Catalog 加载 Iceberg 表 |
| Apache Hive | Hadoop 生态表格式 | HMS Catalog(V4.4.1+) | 只读查询;详见 通过 Catalog 加载 Hive 表 |
外部数据源
| 数据源 | 说明 | 接入方式 |
|---|---|---|
| MaxCompute(ODPS) | 阿里云大数据计算服务 | ODPS Catalog(项目级,只读)或 ODPS 外部表(单表,支持 INSERT) |
数据文件格式(File Format)
| 格式 | 说明 | 典型场景 |
|---|---|---|
| Apache Parquet | 列式存储 | 文件外表、HMS/Hive 表、Iceberg 底层文件、SELECT INTO OUTFILE |
| Apache ORC | 列式存储 | 文件外表、Hive 表、SELECT INTO OUTFILE |
| CSV | 文本格式 | 文件外表、SELECT INTO OUTFILE、LOAD DATA、URL 外表(FILES()) |
文件格式与湖表格式属于不同层次。例如,Iceberg 表底层通常使用 Parquet 存储数据。
支持的 Catalog 类型
注意
当前 CREATE EXTERNAL CATALOG SQL 参考文档主要说明 TYPE = 'ODPS' 的用法。创建 ODPS Catalog 需 OceanBase 数据库 V4.3.5 BP2 及以上版本;创建 HMS Catalog 需 V4.4.1 及以上版本。HMS Catalog 的详细说明参见 通过 Catalog 加载 Hive 表。
| Catalog 类型 | 说明 | 用途 | 文档 |
|---|---|---|---|
| ODPS | MaxCompute 项目目录 | 查询 MaxCompute 项目中的表(只读,V4.3.5 BP2+) | ODPS Catalog |
| HMS | Hive Metastore | 查询 HMS 管理的 Hive / Iceberg 表(只读,V4.4.1+) | 通过 Catalog 加载 Hive 表 |
| REST | Iceberg REST Catalog | 经 REST API 访问 Iceberg 表(最低版本见通过 Catalog 加载 Iceberg 表文档) | 通过 Catalog 加载 Iceberg 表 |
支持的存储类型
对象存储与分布式存储
| 存储类型 | URI 前缀 | 说明 |
|---|---|---|
| 阿里云 OSS | oss:// |
文件外表、URL 外表、SELECT INTO OUTFILE 等 |
| AWS S3 | s3:// |
同上 |
| HDFS | hdfs:// |
V4.3.5 BP1 及以上;需部署 Java SDK 环境 |
| 本地文件系统 | file:// 或路径 |
受 secure_file_priv 限制 |
说明
Azure Blob(azblob://)当前见于备份/归档等场景;外表 LOCATION 是否支持请以 CREATE EXTERNAL TABLE 为准。
Location 与访问凭证
创建外部表或 Location 时,需配置访问凭证(如 access_id、access_key 等),支持通过 URL 参数或 CREATE LOCATION 预先配置(Location 语法请参考 CREATE LOCATION)。
支持的数据操作
读操作(SELECT)
| 操作 | 适用对象 | 说明 |
|---|---|---|
SELECT 查询 |
文件外表、URL 外表、External Catalog 表 | 各类型支持范围见对应子文档 |
| 分区裁剪 | Hive / Iceberg(经 Catalog) | 在 WHERE 中指定分区列时可缩小扫描 |
| 时间旅行 | Iceberg | 部分场景支持 |
JOIN |
上述外部对象与内表 | 支持联邦查询 |
写操作与导出
| 操作 | 适用对象 | 说明 |
|---|---|---|
INSERT INTO |
ODPS 外部表 | 经 MaxCompute API 写入远端表;文件型外表只读 |
INSERT INTO |
Iceberg 表 | 部分 Catalog 类型与版本可能支持;HMS Catalog 下通常为只读,详见 通过 Catalog 加载 Iceberg 表 |
SELECT INTO OUTFILE |
CSV、Parquet、ORC | 导出到对象存储或本地文件 |
CREATE TABLE AS SELECT |
— | 可从外部数据创建内表 |
外表与目录管理
| 操作 | 说明 |
|---|---|
CREATE EXTERNAL TABLE |
创建文件外表或 ODPS 外表 |
CREATE EXTERNAL CATALOG |
创建外部目录 |
ALTER EXTERNAL TABLE |
刷新文件列表、管理分区等 |
DROP TABLE / DROP CATALOG |
删除外表或目录 |
AUTO_REFRESH |
支持 OFF、IMMEDIATE、INTERVAL |
Iceberg 特性支持
以下能力适用于经 External Catalog 访问的 Iceberg 表;具体支持范围因 Catalog 类型与版本而异:
| 特性 | 支持情况 |
|---|---|
| 分区与 Partition Transform | 支持读取含 year()、bucket()、truncate() 等变换的分区 |
| 删除文件 | Position Delete、Equality Delete 等能力以当前版本为准 |
| 数据文件格式 | 以 Parquet 为主 |
| 元数据 | 解析 metadata.json、manifest、manifest-list 等 |
能力边界
已知限制
| 限制项 | 说明 |
|---|---|
| 文件型外表 | 只读,不支持 DML、约束与索引 |
| External Catalog | Catalog 下对象只读,不支持 INSERT、DROP TABLE 等(写入 ODPS 请使用 ODPS 外部表) |
INSERT OVERWRITE |
Iceberg 表不支持 |
| Iceberg 分区写入 | INSERT INTO Iceberg 表时分区写入存在限制 |
| COS 外部表 | 已不再支持新建 |
| Catalog 模式 | 当前仅 MySQL 模式 |