阿里云自研的大数据计算平台 ODPS(Open Data Processing Service),现已正式更名为 MaxCompute,是一款面向大规模结构化数据存储与分析的企业级云服务。MaxCompute 提供高性能、低成本的海量数据仓库解决方案,适用于批量数据的存储、处理和分析任务。本文将从产品简介、使用条件、安装配置到常见问题处理,为您全面介绍如何使用阿里云 MaxCompute 平台。
产品概述
MaxCompute(原名 ODPS)作为阿里云核心的大数据平台,具备以下特性:
PB级别数据处理能力:支持海量数据的存储与高并发分析。
高性能 SQL 引擎:使用类 SQL 的脚本语言 ODPS SQL,方便数据开发与分析。
资源隔离与多租户安全机制:支持多项目管理,灵活进行权限控制。
与生态集成良好:支持与 DataWorks、EMR、OSS、Function Compute 等产品无缝集成。
前提条件
在开始使用 MaxCompute 前,请确保已满足以下条件:
已开通阿里云账号,并拥有 RAM 用户的 AccessKey 权限。
已在阿里云控制台创建 MaxCompute 项目。
使用设备已安装 Java 8 及以上版本(推荐使用 LTS 版本)。
已获取项目的 Endpoint 和相关配置信息。
使用方式
MaxCompute 支持多种使用方式,用户可根据自身习惯选择合适的访问工具:
工具
适用场景
特点
MaxCompute 客户端
命令行操作、自动化脚本
轻量级、灵活
DataWorks
可视化数据开发
图形界面、支持调度与权限管理
MaxCompute Studio(IDE 插件)
本地开发、调试
支持代码补全与本地调试
SDK(Java、Python 等)
系统集成开发
API 接口丰富,适合二次开发
安装与配置 MaxCompute 客户端
下载与解压
下载 MaxCompute 客户端安装包(GitHub 下载地址)。
解压后目录包含 bin/、conf/、lib/、plugins/ 等子目录。
配置 odps_config.ini 文件
在 conf/ 目录下修改 odps_config.ini 文件,关键配置如下:
参数
是否必填
示例
描述
project_name
是
example_project_dev
MaxCompute 项目名称
access_id
是
AKIDEXAMPLE
RAM 用户的 AccessKey ID
access_key
是
SECRETEXAMPLE
RAM 用户的 AccessKey Secret
end_point
是
http://service.cn-hangzhou.maxcompute.aliyun.com/api
区域对应的 Endpoint
log_view_host
否
http://logview.odps.aliyun.com
作业日志查看地址
use_instance_tunnel
否
True
是否使用 Instance Tunnel
说明:请根据所使用地域选择正确的 Endpoint,具体可参见 阿里云官方 Endpoint 文档。
启动客户端
Windows 用户双击 bin/odpscmd.bat,macOS/Linux 用户运行 bin/odpscmd 脚本,即可启动客户端。
成功连接后,终端将显示类似如下信息:
Welcome to MaxCompute
Project: example_project_dev
Endpoint: http://service.cn-hangzhou.maxcompute.aliyun.com/api
常用命令参考
功能
命令
说明
查看命令帮助
help;
或简写 h;
当前用户信息
whoami;
查看账号、IP、项目等信息
退出客户端
quit;
或简写 q;
执行 SQL
select * from table_name;
查询数据表内容
脚本执行
-f script.sql
批量执行 SQL 脚本
单行命令执行
-e "SQL;"
执行一条命令
提示:如果需要关闭 SQL 查询结果表头,在命令前执行:
set odps.sql.select.output.format={
"needHeader":false};
常见问题与解决方法
报错信息
原因分析
解决建议
no java found
Java 未安装或未设置环境变量
安装 Java 8+ 并配置环境变量
Project not found
项目名称错误
确认配置文件中 project_name 的拼写
Access Denied
RAM 用户未加入项目
在控制台授权用户访问目标项目
connect timed out
Endpoint 配置错误
请使用与网络环境匹配的 Endpoint
找不到主类 com.aliyun.openservices.odps.console.ODPSConsole
客户端目录名包含空格
重命名为不包含空格的目录路径
注意事项
不同版本客户端可能存在命令兼容性差异,请以GitHub版本说明为准。
客户端默认编码为 UTF-8,若终端环境为 GBK 等其他编码,可能导致中文显示异常。
通过命令行执行操作可能会产生成本,计费规则详见MaxCompute 计费方式。
后续操作
启动客户端成功后,即可执行如建表、查询、导入导出等数据分析任务。详细命令语法请参考:
MaxCompute SQL 参考文档
Tunnel 数据导入导出
ODPS 基本概念回顾
ODPS (Open Data Processing Service) 是阿里云推出的分布式大数据计算平台,又名 MaxCompute。
它支持 SQL 查询、MapReduce、Graph、Python SDK、Tunnel 导入导出等接口。
典型应用场景:日志分析、用户画像、离线统计、机器学习数据准备等。
项目配置文件示例(使用 odpscmd 工具)
当你使用阿里云提供的 odpscmd CLI 工具时,可以使用如下 .odps_config 配置文件:
# ~/.odps_config
[odps]
# MaxCompute Project 名称
project_name = your_project_name
# 阿里云 Access Key
access_id = your_access_id
access_key = your_access_key
# EndPoint,一般中国区为如下地址
endpoint = http://service.cn-hangzhou.maxcompute.aliyun.com/api
# Tunnel 服务地址(可选)
tunnel_endpoint = http://dt.cn-hangzhou.maxcompute.aliyun.com
# 默认 SQL 命令执行结果是否显示
logview_host = https://logview.odps.aliyun.com
# 默认资源路径
default_job_priority = 9
使用命令行执行 SQL:
odpscmd -c "SELECT COUNT(*) FROM user_log;" -f ~/.odps_config
ODPS SQL 示例
示例 1:创建表
CREATE TABLE user_log (
user_id STRING,
action STRING,
event_time DATETIME
)
PARTITIONED BY (dt STRING);
导入数据(使用 Tunnel 命令行或 DataWorks 上传)
tunnel upload user_log.txt user_log/dt=20250722
查询指定分区数据
SELECT user_id, COUNT(*) AS action_count
FROM user_log
WHERE dt = '20250722'
GROUP BY user_id;
创建视图
CREATE VIEW active_users AS
SELECT user_id
FROM user_log
WHERE dt = '20250722' AND action = 'login';
多分区查询
SELECT *
FROM user_log
WHERE dt BETWEEN '20250720' AND '20250722';
插入分区表
INSERT OVERWRITE TABLE user_log PARTITION (dt='20250722')
SELECT * FROM staging_user_log;