---
title: "OceanBase 查询与读写 MaxCompute（ODPS）数据实战教程 - OceanBase 数据库 V4.6.0 | OceanBase 文档中心"
description: OceanBase 查询与读写 MaxCompute（ODPS）数据实战教程 适用场景 方案 适用场景 ODPS Catalog 快速探查、免建表、元数据自动同步 ODPS 外部表 + Tunnel API 公网访问、兼容性优先 ODPS 外部表 + Storage API VPC 内高性能分析、HTAP 混合负载 …
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库分布式版 - V 4.6.0

# OceanBase 查询与读写 MaxCompute（ODPS）数据实战教程

更新时间：2026-06-24 21:06:44

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.6.0/zh-CN/620.obap/1000.ap-tutorials/1200.odps-external-table-query.md)  

## 适用场景

| 方案 | 适用场景 |
| --- | --- |
| ODPS Catalog | 快速探查、免建表、元数据自动同步 |
| ODPS 外部表 + Tunnel API | 公网访问、兼容性优先 |
| ODPS 外部表 + Storage API | VPC 内高性能分析、HTAP 混合负载 |

## 假设前提

本教程假设 MaxCompute（ODPS）中已存在一张标准 TPC-H lineitem 表，其结构与样例数据如下：

```shell
+------------+-----------+-----------+--------------+------------+------------------+------------+-------+--------------+--------------+------------+------------+-------------+--------------------+------------+----------------------------------+
| l_orderkey | l_partkey | l_suppkey | l_linenumber | l_quantity | l_extendedprice  | l_discount | l_tax | l_returnflag | l_linestatus | l_shipdate | l_commitdate | l_receiptdate | l_shipinstruct     | l_shipmode | l_comment                        |
+------------+-----------+-----------+--------------+------------+------------------+------------+-------+--------------+--------------+------------+------------+-------------+--------------------+------------+----------------------------------+
|          1 |   1551894 |     76910 |            1 |      17.00 |         33078.94 |       0.04 |  0.02 | N            | O            | 1996-03-13 | 1996-02-12 | 1996-03-22  | DELIVER IN PERSON  | TRUCK      | egular courts above the          |
|          1 |    673091 |     73092 |            2 |      36.00 |         38306.16 |       0.09 |  0.06 | N            | O            | 1996-04-12 | 1996-02-28 | 1996-04-20  | TAKE BACK RETURN   | MAIL       | ly final dependencies: slyly bold|
|          1 |    636998 |     36999 |            3 |       8.00 |         15479.68 |       0.10 |  0.02 | N            | O            | 1996-01-29 | 1996-03-05 | 1996-01-31  | TAKE BACK RETURN   | REG AIR    | riously. regular, express dep    |
|          1 |     21315 |     46316 |            4 |      28.00 |         34616.68 |       0.09 |  0.06 | N            | O            | 1996-04-21 | 1996-03-30 | 1996-05-16  | NONE               | AIR        | lites. fluffily even de          |
|          1 |    240267 |     15274 |            5 |      24.00 |         28974.00 |       0.10 |  0.04 | N            | O            | 1996-03-30 | 1996-03-14 | 1996-04-01  | NONE               | FOB        |  pending foxes. slyly re         |
+------------+-----------+-----------+--------------+------------+------------------+------------+-------+--------------+--------------+------------+------------+-------------+--------------------+------------+----------------------------------+

```

## 环境准备

在开始前，请确保满足以下前提条件：

- OceanBase 版本 ≥ V4.3.5 BP2（支持 ODPS Catalog）
 - 已部署 JDK 8 或 11，并启用 Java 支持（`ob_enable_java_env = true`）
 - 已完成 OceanBase JAVA SDK 环境部署，具体部署步骤请参见 [部署 OceanBase 数据库 JAVA SDK 环境](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000005681933)。

## 方式一：使用 ODPS Catalog 快速探查数据（推荐）

OceanBase 自 V4.3.5 BP2 起支持 ODPS Catalog，可直接访问 MaxCompute 表，无需手动创建外部表。

### 创建 ODPS Catalog

```sql
CREATE EXTERNAL CATALOG odps_lineitem_test
PROPERTIES (
    TYPE = 'ODPS',
    ACCESSID = 'XXXXXXXXXXXX',
    ACCESSKEY = 'xxxxxxxxxxxxxx',
    ENDPOINT = 'https://service.cn-hangzhou.maxcompute.aliyun.com/api',
    TUNNEL_ENDPOINT = '',
    PROJECT_NAME = 'bigdata_public_dataset'
);

```

**参数说明**：

- TUNNEL_ENDPOINT 可留空，系统将自动推导。
 - 此方式默认使用 Tunnel API，适用于公网环境，或 OBServer 与 ODPS 位于不同 VPC 的场景。
 - `bigdata_public_dataset`：详细数据集地址参见 [公开数据集概述](https://help.aliyun.com/zh/maxcompute/getting-started/overview-of-public-datasets)。

### 查询数据验证

```sql
SET CATALOG odps_lineitem_test;

USE odps_lineitem_test.test_db;

SELECT * FROM lineitem LIMIT 5;

```

预期结果：返回与源表完全一致的 5 行数据。

优势：

- 自动同步表结构与分区信息。
 - 无需定义列类型，避免人工映射错误。
 - 适合快速数据探查与元数据验证。

## 方式二：创建 ODPS 外部表（精细控制场景）

当需要显式控制列映射、启用 Storage API 或兼容旧版本时，可创建 ODPS 外部表。

### 切换到 OceanBase 的数据库

如果您先尝试了 **方式一**，那么此时需要先切换回到 OceanBase 的数据库。

```sql
USE internal.test;

```

### 创建外部表

```sql
CREATE EXTERNAL TABLE external_lineitem (
    l_orderkey      BIGINT,
    l_partkey       BIGINT,
    l_suppkey       BIGINT,
    l_linenumber    BIGINT,
    l_quantity      DECIMAL(15,2),
    l_extendedprice DECIMAL(15,2),
    l_discount      DECIMAL(15,2),
    l_tax           DECIMAL(15,2),
    l_returnflag    CHAR(1),
    l_linestatus    CHAR(1),
    l_shipdate      DATE,
    l_commitdate    DATE,
    l_receiptdate   DATE,
    l_shipinstruct  CHAR(25),
    l_shipmode      CHAR(10),
    l_comment       VARCHAR(44)
)
PROPERTIES (
    TYPE = 'ODPS',
    ACCESSID = 'XXXXXXXXXXXX',
    ACCESSKEY = 'xxxxxxxxxxxxxx',
    ENDPOINT = 'https://service.cn-hangzhou.maxcompute.aliyun.com/api',
    TUNNEL_ENDPOINT = '',
    PROJECT_NAME = 'bigdata_public_dataset',
    SCHEMA_NAME = 'tpch_10g',
    TABLE_NAME = 'lineitem',
    QUOTA_NAME = '',
    COMPRESSION_CODE = 'zstd'
);

```

关键配置说明：

- `COMPRESSION_CODE = 'zstd'`：启用压缩以提升网络传输效率。
 - 默认使用 `Tunnel API`，适用于通用网络环境。
 - 列定义需与 MaxCompute 表一致。
 - `bigdata_public_dataset`：详细数据集地址参见 [公开数据集概述](https://help.aliyun.com/zh/maxcompute/getting-started/overview-of-public-datasets)。

### 验证与进阶操作

#### 验证外部表读取

```sql
SELECT * FROM external_lineitem LIMIT 5;

```

预期输出：返回与源表完全一致的 5 行数据。

#### （可选）导入内部表加速分析

若需高频查询或复杂聚合，可将数据导入 OceanBase 内部表：

```sql
-- 创建内部表
CREATE TABLE ob_lineitem LIKE external_lineitem;

-- 批量导入
INSERT INTO ob_lineitem SELECT * FROM external_lineitem;

-- 验证
SELECT COUNT(*) FROM ob_lineitem;

```

### （可选）导出数据回 MaxCompute

使用 `INSERT OVERWRITE` 语句将 OceanBase 数据写回 MaxCompute：

```sql
-- 假设已创建目标外部表 lineitem_target
INSERT OVERWRITE lineitem_target
SELECT * FROM ob_lineitem
WHERE l_shipdate >= '1996-01-01';

```

使用限制：

- 目标表与源表的列数、顺序、类型必须完全一致。
 - 仅支持 INSERT INTO / OVERWRITE ... SELECT 语法。

## 补充：API 模式选择指南

OceanBase 支持两种 MaxCompute 访问模式，应根据部署环境选择：

### 场景一：VPC 内高性能访问（推荐）

适用条件：OceanBase 部署在阿里云 ECS，且与 MaxCompute 同地域 VPC。

```sql
CREATE EXTERNAL TABLE lineitem1 ( /* 字段同上 */ )
PROPERTIES (
    TYPE = 'ODPS',
    ACCESSID = 'XXXXXXXXXXXX',
    ACCESSKEY = 'xxxxxxxxxxxxxx',
    ENDPOINT = 'https://service.cn-hangzhou-vpc.maxcompute.aliyun-inc.com/api',
    PROJECT_NAME = 'test_obqa',
    TABLE_NAME = 'lineitem1',
    QUOTA_NAME = 'pay-as-you-go',  -- 必须为按量付费
    API_MODE = 'storage_api',      -- 启用 Storage API
    SPLIT = 'byte',                -- 按字节分片（行大小不均时推荐）
    COMPRESSION_CODE = 'zstd'
);

```

优势：

- 支持谓词下推与列裁剪。
 - 低延迟、高吞吐。
 - 自动并行分片。

### 场景二：公网或通用环境（兼容优先）

```sql
CREATE EXTERNAL TABLE lineitem ( /* 字段同上 */ )
PROPERTIES (
    TYPE = 'ODPS',
    ACCESSID = 'XXXXXXXXXXXX',
    ACCESSKEY = 'xxxxxxxxxxxxxx',
    ENDPOINT = 'https://service.cn-hangzhou.maxcompute.aliyun.com/api',
    PROJECT_NAME = 'bigdata_public_dataset',
    SCHEMA_NAME = 'tpch_10g',
    TABLE_NAME = 'lineitem',
    COMPRESSION_CODE = 'zstd'
    -- 默认使用 Tunnel API
);

```

优势：

- 无需 VPC 网络配置。
 - 兼容所有部署环境。
 - 配置简单，快速上手。

更多信息，参考 [ODPS 外部表](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000006326203)。

## 相关文档

- [ODPS Catalog](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000005682509)
 - [ODPS 外部表](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000006326203)
 - [插入数据](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000005682545)
 - [插入数据](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000005682556)。
 - [部署 OceanBase 数据库 JAVA SDK 环境](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000005681933)

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
