上手阿里云大数据计算,第一步是搞清 ODPS 与 MaxCompute 的关系:ODPS 是这套平台的曾用名,官方文档现在的标准称呼是云原生大数据计算服务 MaxCompute,并明确标注”原名 ODPS”。2025 年云栖大会上,ODPS 又以平台级品牌的身份回归,旗下包含 ODPS-MaxCompute、ODPS-Hologres、ODPS-DataWorks 三款核心产品,所以今天搜到的”ODPS 教程”,讲的绝大多数就是 MaxCompute。它以 Serverless 架构提供全托管数仓能力,用标准 SQL 处理 PB 级数据,上面通过 DataWorks 等产品做开发治理。下文按”准备—执行—验证”的顺序给出一套可直接照做的上手指引。

开始前的三个准备
环境准备决定了后面每一步能不能顺利跑通,缺一项就会卡在连接或权限上:
- 开通 MaxCompute 服务,并创建一个项目空间(Project),它是计费、权限与对象管理的独立单元;
- 在访问控制里准备好 AccessKey ID 与 AccessKey Secret,这是客户端连接的凭据;
- 记下所购资源所在地域的 Endpoint 与 Tunnel 服务地址,内网与公网地址不同,选错地址会导致连接超时或产生额外流量费用。
权限方面要留意:项目 Owner 需要把协作者加进项目并单独授权,普通用户加进来之后依然无法直接操作,要用 grant 语句授予建表、查询等权限。
计费模式上,MaxCompute 走 Serverless 按量付费路线,计算按作业消耗计费、存储按数据量计费,项目空间是独立的计费单元。新手常见的成本问题是全表扫描:查询不带分区条件时,作业会扫掉整张表的数据量,费用随数据规模线性上涨。所以建表阶段规划好分区列、查询阶段养成带分区过滤的习惯,本身就是控制成本的手段,而不只是性能优化。测试阶段建议用小数据量把流程跑通,再接入真实数据。
客户端连接与项目空间操作
MaxCompute 提供多种开发入口,命令行客户端 odpscmd 适合快速验证,DataWorks 的 DataStudio 适合日常开发,两者走的是同一套项目空间体系。以 odpscmd 为例,先在配置文件里填好连接信息:
# odps_config.ini
access_id=你的AccessKey ID
access_key=你的AccessKey Secret
project_name=your_project
end_point=https://service.cn-hangzhou.maxcompute.aliyun.com/api
tunnel_endpoint=https://dt.cn-hangzhou.maxcompute.aliyun.com
运行 bin 目录下的 odpscmd(Windows 下为 odpscmd.bat)即可进入交互界面。命令行里所有关键字、项目名、表名都不区分大小写,用 use 项目名; 切换项目空间后,后续操作都默认作用于当前项目。想跨项目访问别人的表,写全限定名 project2.table_name 即可,前提是已有对应授权。
建表与数据上云
项目空间里的核心对象是表。MaxCompute 的表支持分区字段,按分区裁剪查询是控制成本的关键手段,建表时应优先规划好分区列。下面这段建一张以日期分区的日志表:
CREATE TABLE IF NOT EXISTS user_log (
user_id STRING COMMENT '用户ID',
action STRING COMMENT '行为类型',
event_time DATETIME COMMENT '事件时间'
)
PARTITIONED BY (dt STRING COMMENT '日期分区');
-- 本地文件上传到指定分区
-- tunnel upload user_log.txt user_log/dt=20250722;
Tunnel 命令在 shell 中执行(去掉注释符号),批量场景也可以直接用 insert into ... values 写入少量测试数据。线上规模的数据同步则更适合交给 DataWorks 数据集成或 Flink 流式写入,命令行通道留给开发调试。建表完成后,show tables; 能列出项目内所有表,desc 表名; 查看列结构、分区与存储大小,这是确认建表结果的两个基础命令。
查询验证与常用命令速查
数据就位后跑一条聚合 SQL 验证链路,同时在提交后留意 LogView 链接,作业报错时打开它能看到每个阶段的执行细节。除了命令行,DataWorks 里也能直接运行 SQL 并查看运行日志,两条入口的底层引擎相同,结果一致:
| 命令 | 作用 | 使用位置 |
|---|---|---|
| use project | 进入指定项目空间 | 客户端 |
| show tables | 列出当前项目的表 | 客户端/SQL |
| desc table_name | 查看表结构与分区 | 客户端/SQL |
| tunnel upload | 本地文件上传 | Shell |
| insert into/overwrite | 写入或覆盖数据 | SQL |
| select … where dt=… | 分区裁剪查询 | SQL |
到这一步,”连接—建表—上数—查询”的闭环就走通了,后续的调度、血缘与权限治理都可以在这个基础上平滑叠加。日常迭代建议把 SQL 交给 DataWorks 做调度与血缘管理,命令行留作排障与临时查询的备用通道,两边的对象完全一致。
常见问题(FAQ)
Q1:ODPS 和 MaxCompute 是什么关系?
MaxCompute 是 ODPS 更名后的正式名称,官方文档标注”原名 ODPS”,两者指同一产品。
Q2:怎么查看一张表有哪些分区?
执行 show partitions 表名; 即可列出全部分区,desc 命令能看到分区列定义。
Q3:上传数据用哪种方式合适?
小文件用 tunnel upload 命令最直接;持续同步用 DataWorks 数据集成或 Flink 写入。