MaxCompute本地客户端(odpscmd)适用于命令行操作场景,可在本地直接运行,高效执行命令并管理项目。本文介绍其下载、安装、配置、运行及基本使用方法。
适用范围
待安装MaxCompute客户端的设备已安装Java 8或以上版本。
版本兼容性
MaxCompute客户端从v0.28.0版开始支持JDK 1.9,v0.28.0以下版本只支持JDK 1.8。启动MaxCompute客户端后,在命令行界面可查看客户端版本号。
MaxCompute客户端的输出格式不承诺向前兼容,不同版本间的客户端命令格式及行为有差异,请勿依赖客户端的输出格式执行任何解析工作。
更多客户端版本,请参见aliyun-odps-console。
编码格式
客户端默认编码为UTF-8,若本机环境编码不是UTF-8,通过客户端查询MaxCompute表数据返回值有中文时可能会出现乱码,或通过客户端执行Tunnel命令上传本地数据文件到MaxCompute,也可能会出现中文乱码。
费用说明
使用MaxCompute客户端连接项目不收费,但是通过客户端执行的操作可能会触发MaxCompute计费。例如,使用客户端提交一个SQL查询和写入命令,此SQL命令在MaxCompute上运行会消耗计算资源,同时写入数据会占用存储空间,将产生计算费用和存储费用。MaxCompute计费详情请参见计费项与计费方式。
安装并配置MaxCompute客户端
客户端从v0.27.0版本开始支持MaxCompute 2.0新数据类型,推荐使用新数据类型。支持的数据类型列表,请参见2.0数据类型版本。
操作流程如下:
- 说明
通过上方链接进入客户端发布界面,下载最新版本的MaxCompute客户端安装包(odpscmd_public.zip)。
如果上方链接无法下载,可以尝试单击此处的MaxCompute客户端安装包(OSS)下载。更多关于GitHub链接访问失败的问题,推荐在搜索引擎中查找相关解决方案。
解压下载的安装包文件,得到bin、conf、lib和plugins文件夹。
进入conf文件夹,配置odps_config.ini文件。
odps_config.ini文件中使用井号(#)作为注释。参数说明如下。
参数
是否必填
描述
示例
project_name
是
访问的目标MaxCompute项目名称。
如果创建了标准模式的工作空间,在配置project_name时,请注意区分生产环境与开发环境(_dev)的项目名称,请参见工作空间模式区别。
登录MaxCompute控制台,在左上角选择地域。
在左侧导航栏,选择。
在项目管理页面,可以获取MaxCompute项目名称。
doc_test_dev
access_id
是
阿里云账号或RAM用户的AccessKey ID。可以进入AccessKey管理页面获取AccessKey ID。
无
access_key
是
AccessKey ID对应的AccessKey Secret。
无
end_point
是
MaxCompute服务的连接地址。
需要根据创建MaxCompute项目时选择的地域以及网络连接方式配置Endpoint。各地域及网络对应的Endpoint值,请参见Endpoint。
重要Endpoint用于MaxCompute服务,Tunnel Endpoint用于MaxCompute的Tunnel服务,此处请填写Endpoint。
如果Endpoint配置有误,会出现无法访问错误,请务必仔细确认。
http://service.cn-hangzhou.maxcompute.aliyun.com/api
log_view_host
否
Logview地址。推荐配置该参数,如果不配置该参数,在作业报错时无法快速定位问题。
可以通过该地址查看作业的详细运行信息,并为报错处理提供依据。固定取值为:http://logview.odps.aliyun.com。
http://logview.odps.aliyun.com
https_check
否
是否开启HTTPS访问机制,对访问MaxCompute项目的请求进行加密。取值范围如下:
True:采用HTTPS机制。
False:采用HTTP机制。
默认值为False。
True
data_size_confirm
否
输入数据量的最大值,单位为GB。取值范围无限制。推荐设置为100 GB。
100
update_url
否
预留参数,暂无需关注。
无
use_instance_tunnel
否
是否使用InstanceTunnel下载SQL执行结果。取值范围如下:
True:使用InstanceTunnel下载SQL执行结果。
False:不使用InstanceTunnel下载SQL执行结果。
默认值为False。
True
instance_tunnel_max_record
否
客户端返回的SQL执行结果的最大记录数。如果use_instance_tunnel值为True,需要配置该参数。最大值为10000。
10000
tunnel_endpoint
否
Tunnel服务的外网访问链接。
如果未配置Tunnel Endpoint,Tunnel会自动路由到MaxCompute服务所在网络对应的Tunnel Endpoint。
如果配置了Tunnel Endpoint,则以配置为准,不自动路由。
各地域及网络对应的Tunnel Endpoint值,请参见Endpoint。
http://dt.cn-hangzhou.maxcompute.aliyun.com
set.<key>
否
设置MaxCompute项目的属性。
更多属性信息,请参见属性列表。
set.odps.sql.decimal.odps2=true
请确保上述信息配置正确,若信息配置错误,会导致项目连接失败。
运行MaxCompute客户端
若使用MaxCompute客户端的用户为RAM用户,需要通过阿里云主账号将该RAM用户添加至目标MaxCompute项目。更多添加工作空间成员操作,请参见授权给其他用户。
启动MaxCompute客户端有如下两种方式,任选其一即可:
方式一:安装包的脚本文件
在MaxCompute客户端安装路径下的bin文件夹中,双击
odpscmd.bat文件(Windows系统)或者双击odpscmd文件(macOS系统),即可启动MaxCompute客户端。返回如下信息,表明已成功连接MaxCompute项目。
方式二:系统的命令行执行窗口
在系统的命令行执行窗口,进入MaxCompute客户端安装路径下的bin目录,执行
odpscmd命令(Windows系统)或sh odpscmd(Linux系统或Mac系统),即可启动MaxCompute客户端。返回如下信息,表明已成功连接MaxCompute项目。说明在Ubuntu执行
sh odpscmd会提示报错,请使用./odpscmd命令尝试启动。
如果通过系统的命令行窗口启动MaxCompute客户端,可以指定参数来执行命令,更多参数信息,请参见启动参数。
MaxCompute客户端相关操作
获取全部命令帮助
可以通过如下方式快速获取MaxCompute客户端的命令帮助,可以任选其中一种:
在MaxCompute客户端查看命令帮助信息
查看全部命令的帮助信息。
odps@project_name>help; -- 等价于如下命令。 odps@project_name>h;通过指定关键字查看相关命令帮助信息。
例如获取与表操作相关的命令帮助。
odps@project_name>help table; -- 返回结果如下。 Usage: alter table <tablename> merge smallfiles Usage: export table <tablename> Usage: show tables [in <project_name>] [like '<prefix>'] list|ls tables [-p,-project <project_name>] Usage: describe|desc [<projectname>.]<tablename> [partition(<spec>)] Usage: read [<project_name>.]<table_name> [(<col_name>[,..])] [PARTITION (<partition_spec>)] [line_num]重要read命令属于SQL语法,涉及收费详细说明请参考SQL收费标准。
在系统的命令行执行窗口查看命令帮助信息
在系统的命令行执行窗口,切换到MaxCompute客户端安装路径下的bin目录,执行如下命令查看全部命令的帮助信息。在命令行执行窗口启动MaxCompute客户端时,允许指定一系列参数,参数信息请参见启动参数。
...\odpscmd\bin>odpscmd -h获取当前登录用户信息
在运行MaxCompute客户端后执行如下命令获取当前登录用户的信息。
odps@project_name>whoami;返回结果说明如下。
Name:当前登录的账号信息。
Source IP:MaxCompute客户端所在设备的IP地址。
End_Point:MaxCompute服务的连接地址。
Project:MaxCompute项目的名称。
Schema:MaxCompute项目下的Schema。
退出MaxCompute客户端
执行如下命令退出运行中的MaxCompute客户端。
odps@project_name>quit;
-- 等价于如下命令。
odps@project_name>q;执行tunnel download命令
通过MaxCompute客户端首次执行
tunnel download命令时,MaxCompute客户端会在当前设备的客户端安装目录plugins/dship下,创建一个用于存放日志的session文件夹。如果多名用户共用同一设备执行
tunnel download命令时,为确保数据安全,可以通过如下方式解决该问题:通过设备自身的文件夹权限管理功能,管控session文件夹权限。
在
tunnel download命令中添加-sd <新session文件夹名称>或-session-dir <新session文件夹名称>参数,将数据下载至其他session文件夹。更多tunnel download命令信息,请参见Download。
相关文档
登录MaxCompute客户端后,即可在MaxCompute项目内执行SQL命令,请参见通过客户端使用MaxCompute。
常见问题
配置完odps_config.ini文件后启动MaxCompute客户端,常见报错如下:
报错:no java found
问题原因
运行MaxCompute客户端的机器未安装Java。
解决方案
在运行MaxCompute客户端的机器安装Java,并配置环境变量。MaxCompute客户端从v0.28.0版本起开始支持JDK 1.9,之前版本只支持JDK 1.8。
报错:找不到或无法加载主类 com.aliyun.openservices.odps.console.ODPSConsole
问题原因
可能下载了两次客户端安装包,第二次的时候目录被自动重命名为
odpscmd_public (1),目录名称里包含了空格等字符,导致路径识别错误。解决方案
删除目录名称中的空格等字符。
报错:Accessing project '<projectname>' failed: ODPS-0420111: Project not found - '<projectname>'.
问题原因
可能是odps_config.ini配置文件中的项目名称填写错误。
解决方案
登录MaxCompute控制台,在左上角选择地域。
在左侧导航栏,选择。
在项目管理页面,获取已经创建的正确MaxCompute项目名称后,修改odps_config.ini配置文件。
报错:Accessing project '<projectname>' failed: ODPS-0420095: Access Denied - Authorization Failed [4002], You don't exist in project <projectname>.
问题原因
当前使用的AccessKey对应的阿里云账号或RAM用户未添加到目标项目中或者项目名称有误。
解决方案
联系项目所有者将对应的阿里云账号或RAM用户添加到目标项目中,操作详情请参见添加阿里云账号用户(项目级别)或添加RAM用户(项目级别)。
报错:Accessing project '<projectname>' failed: { "Code": "InvalidProjectTable", "Message": "The specified project or table name is not valid or missing."}或Accessing project '<projectname>' failed: connect timed out
问题原因
end_point参数值填写错误。例如在本地计算机上使用MaxCompute客户端连接项目,却使用了阿里云经典网络连接方式下的Endpoint(外网环境使用了内网Endpoint)或填入了Tunnel Endpoint。解决方案
请参照Endpoint文档,选择与要连接项目所属区域和网络环境相符的Endpoint。
Endpoint用于MaxCompute服务,Tunnel Endpoint用于MaxCompute的Tunnel服务,
end_point参数值应填写Endpoint,请不要填入Tunnel Endpoint。
报错:Accessing project '<projectname>' failed: <endpoint>
问题原因
end_point参数值填写错误。例如将华东1(杭州)地域的外网Endpoint(http://service.cn-hangzhou.maxcompute.aliyun.com/api),输入为http://service.ch-hangzhou.maxcompute.aliyun.com/api。解决方案
请参照Endpoint文档,复制要连接项目所属区域和网络环境相符的Endpoint,建议不要手动输入。
启动参数
在系统的命令行执行窗口,可以通过指定一系列参数快速执行命令,命令使用方法如下。
Usage: odpscmd [OPTION]...
where options include:
--help (-h)for help
--config=<config_file> specify another config file
--project=<prj_name> use project
--endpoint=<http://host:port> set endpoint
-k <n> will skip begining queries and start from specified position
-r <n> set retry times
-f <"file_path;"> execute command in file
-e <"command;[command;]..."> execute command, include sql command启动参数说明如下。
命令 | 说明 | 命令示例 |
| 获取MaxCompute客户端的全部命令帮助信息。 |
|
| 指定配置文件odps_config.ini的路径。默认配置文件的路径是 |
|
| 指定访问的MaxCompute项目名称。 |
|
| 指定连接MaxCompute服务的Endpoint信息。更多Endpoint信息,请参见Endpoint。 |
|
| 运行从指定位置开始的语句。当 | 忽略前两条语句,直接从第三条语句开始执行。 |
| 设置作业运行失败时的重试次数。 |
|
| 指定读取的文件。 |
|
| 指定执行的命令。 |
|
在Shell(或Windows命令行)执行窗口,用户可能需要使用odpscmd -e <SQL语句>执行得到的动态返回值,Shell的变量会获取这个动态返回值,然后在Shell中执行后续作业。此场景需要返回值不包含运行信息、表头等额外信息。为便于Shell调用,需要配置odps_config.ini文件中的use_instance_tunnel参数值为false,关闭Instance Tunnel服务。然后执行set odps.sql.select.output.format={"needHeader":false,"fieldDelim":" "}; 命令,关闭表头显示。
例如表noheader中有一列三行数据,为1、2、3。执行如下命令,将计算结果重定向到stdout到目标句柄,计算结果仅包含具体数据,不包含其他额外信息:
--Windows命令行执行窗口运行命令如下。
...\odpscmd\bin>odpscmd -e "set odps.sql.select.output.format={""needHeader"":false,""fieldDelim"":"" ""};select * from noheader;" >D:\test.txt
--返回结果会保存在D:\test.txt中。
--Shell执行窗口运行命令如下。
/Users/.../odpscmd/bin/odpscmd -e "set odps.sql.select.output.format={\"needHeader\":false,\"fieldDelim\":\"\"};select * from noheader;" >/Users/A/temp/test.txt
--返回结果会保存在/Users/A/temp/test.txt中。
--返回结果如下。
1
2
3版本更新记录
MaxCompute客户端近期版本的更新说明如下,详细信息请单击对应版本链接获取。
更多MaxCompute客户端版本及相关功能更新说明,请参见GitHub。
版本 | 变更类型 | 描述 |
新功能 | 支持使用STS令牌作为临时安全凭证。 | |
缺陷修复 | Apache Arrow库版本更新,修复Arrow库依赖的兼容性问题。 | |
新功能 | 新增跳过进度配置选项。添加 | |
功能增强 |
| |
缺陷修复 | 升级依赖关系以清除CVE漏洞。 | |
新功能 | 增强的外部卷创建加速:为外部卷下载添加加速选项。 | |
功能增强 | 重构 | |
新功能 |
| |
功能增强 |
| |
新功能 |
| |
新功能 |
| |
缺陷修复 | MCQA模式能够更准确地识别fallback行为,避免重复展示logview。 | |
新功能 |
| |
功能增强 |
| |
新功能 | Tunnel 相关操作支持JSON数据类型。 | |
新功能 |
| |
功能增强 | 增强的表描述存储层信息:扩展 | |
新功能 |
| |
新功能 |
| |
功能增强 |
| |
新功能 |
| |
缺陷修复 | 删除Log4j依赖。 | |
新功能 | 支持项目按Schema存储。更多信息请参见Schema操作。 | |
新功能 | 支持复杂数据类型通过Tunnel上传、下载。 | |
功能增强 |
| |
新功能 | 支持创建External Project连接DLF(Data Lake Formation),实现湖仓一体功能。更多湖仓一体信息,请参见MaxCompute湖仓一体概述。 | |
缺陷修复 | 修复下载TIMESTAMP类型数据时,纳秒(nano)部分处理不正确的问题。 |