本文为您介绍如何通过客户端使用MaxCompute服务的功能。

版本更新记录

MxCompute客户端近期版本的更新说明如下,详细信息请单击对应版本链接获取。

版本 变更类型 描述
v0.36.0-public 新功能 支持创建External Project连接DLF(Data Lake Formation)。
缺陷修复 修复下载TIMESTAMP类型数据时,纳秒(nano)部分处理不正确的问题。

下载安装

下载客户端,安装并配置客户端后即可正常使用。详情请参见安装并配置客户端
说明
  • 请不要依赖客户端的输出格式执行任何解析工作。客户端的输出格式不承诺向前兼容,不同版本间的客户端命令格式及行为有差异。更多版本客户端下载请参见aliyun-odps-console
  • 客户端从0.28.0版开始支持JDK 1.9,之前的版本只支持JDK 1.8。
  • 客户端从0.27.0版本开始支持MaxCompute 2.0新数据类型,详情请参见新数据类型

安装并配置好客户端后,您可以借助命令行工具执行以下操作。更多客户端命令介绍,请参见常用命令列表

运行客户端

  • 运行安装路径下bin目录中的.bat文件即可运行客户端,返回信息如下。
    [admin: ~]$odpscmd
    Aliyun ODPS Command Line Tool
    Version 1.0
    @Copyright 2012 Alibaba Cloud Computing Co., Ltd. All rights reserved.
    在光标位置输入命令(以分号作为语句的结束标志),回车即可运行。
    odps@ odps> insert overwrite table table_name select * from table_name;
  • 在Windows中使用CMD命令行运行客户端。
    在CMD命令行中,进入到bin目录下,执行odpscmd,返回如下表示运行成功。更多命令请参见启动参数
    D:\maxcompute\bin>odpscmd
    Aliyun ODPS Command Line Tool
    Version 0.30.2
    @Copyright 2018 Alibaba Cloud Computing Co., Ltd. All rights reserved.

获取帮助

  • 使用Windows的CMD命令行执行命令。
    在CMD命令行中,进入到bin目录下,执行如下命令。
    odpscmd -h
  • 使用MaxCompute客户端执行命令。
    • 在客户端执行如下命令查看全部帮助信息。
      help;
      --等价于如下命令。
      h;
    • 在客户端执行如下命令查看与关键字有关的命令提示。
      help [keyword];
      例如,获取与表操作相关的命令提示,如下所示。
      odps@ odps> help table;
      Usage: alter table merge smallfiles
      Usage: show tables [in ]
            list|ls tables [-p,-project ]
      Usage: describe|desc [.] [partition()]
      Usage: read [.] [([,..])] [PARTITION ()] [line_num]

启动参数

在Windows下以CMD命令行启动时,您可指定一系列参数,如下所示。
Usage: odpscmd [OPTION]...
where options include:
    --help (-h)for help
    --project= use project
    --endpoint= set endpoint
    -u  -p  user name and password
    -k  will skip begining queries and start from specified position
    -r  set retry times
    -f <"file_path;"> execute command in file
    -e <"command;[command;]..."> execute command, include sql command
    -C will display job counters
启动参数说明如下。
参数 说明
-help (-h) 获取客户端帮助信息。
--project= use project 指定进入的项目空间名称。
--endpoint= set endpoint 指定使用的Endpoint信息,详情请参见配置Endpoint
-u 指定使用的用户名称。
-p 指定用户的密码。
-k 表示忽略前面的语句,从指定位置的语句开始运行。
说明
  • skip<=0时,从第一条语句开始执行。
  • 每个以分号分隔的语句被视为一条有效语句。
  • 在运行时会打印出当前运行成功或者失败的是第几条语句。
-r 设置重试次数。
-f 指定读取文件。
-e 指定执行的命令。
-C 显示作业计数器。

示例

  • 指定-f参数读取本地文件。
    1. 准备本地脚本文件script.txt,假设存放在D盘,文件内容如下所示。
      DROP TABLE IF EXISTS test_table_mj;
      CREATE TABLE test_table_mj (id string, name string);
      DROP TABLE test_table_mj;
    2. 打开您的CMD命令行工具,进入客户端所在路径,运行以下命令。
      odpscmd\bin>odpscmd -f D:/script.txt;
  • 指定-k参数读取指定位置的参数。
    1. 假设文件/tmp/test.sql中有三条SQL语句,如下所示。
      drop table table_name;
      create table table_name (dummy string);
      insert overwrite table table_name select count(*) from table_name;
    2. 执行如下语句忽略前两条语句,直接从第三条语句开始执行。
      odpscmd -k 3 -f test.sql
  • 通过执行set odps.sql.select.output.format={needHeader:false,fieldDelim:""};命令,关闭表头显示,便于Shell调用。

    在Shell(或Windows命令行)执行窗口,用户会可能需要使用odpscmd -e SQL语句执行得到的动态返回值,Shell的变量会获取这个动态返回值,然后在Shell中执行后续作业。此场景需要返回值不包含运行信息、表头等额外信息。您可以通过set odps.sql.select.output.format={needHeader:false,fieldDelim:""};关掉表头显示。

    例如表noheader中有一列三行数据,为1、2、3。执行如下命令,将计算结果重定向stdout到目标句柄,计算结果仅包含具体数据,不包含其他额外信息:

    odpscmd -e "set odps.sql.select.output.format={""needHeader"":false,""fieldDelim"":""""};select * from noheader;" >/temp/test.txt
    返回结果如下:
    1
    2
    3

获取当前登录用户

执行如下命令即可获取当前登录用户的云账号、使用的Endpoint配置和项目名。
whoami;
示例
odps@ hiveut>whoami;
Name: odpstest@aliyun.com
End_Point: http://service.<regionid>.maxcompute.aliyun.com/api
Project: lijunsecuritytest

退出

执行如下命令退出客户端。
odps@ > quit;
--等价于下面的命令。
odps@ > q;