
# Hive WebHCat接口介绍
![](https://support.huaweicloud.com/devg-lts-mrs/public_sys-resources/note_3.0-zh-cn.png)
- 以下示例的IP为WebHCat的业务IP，端口为安装时设置的WebHCat HTTP端口。
- 需要在安装客户端的机器上进行kinit认证操作后才可执行示例操作。
- 以下示例均为https协议的示例，若要使用http协议，需要执行以下操作：
  1. 将REST接口切换成HTTP协议方式，请参见[配置基于HTTPS/HTTP协议的REST接口](https://support.huaweicloud.com/cmpntguide-mrs/mrs_01_0957.html)。
  
  2. 将示例中的"--insecure"去掉，将https替换成http，例如 **curl -i -u : --insecure --negotiate 'https://10.64.35.144:9111/templeton/v1/status'**
     更改为
     **curl -i -u : --negotiate 'http://10.64.35.144:9111/templeton/v1/status'**
     
   
- 执行操作前需确保使用的curl版本在7.34.0以上。 可以使用以下命令查看curl版本：
  **curl -V**
  
- MRS 3.6.0-LTS及之后版本，对于WebHCat提交Yarn作业的接口，例如"/hive(POST)"，提交的Yarn任务默认使用JDK 8运行，不支持指定JDK版本。
 
1. :version(GET)
   - 描述 查询WebHCat支持的返回类型列表。
     
   
   - URL https://www.myserver.com/templeton/:version
     
   
   - 参数
     
     | **参数**   | **描述**               |
     |:---|:---|
     | :version | WebHCat版本号（当前必须是v1）。 |
        
     
   
   - 返回结果
     
     | **参数**        | **描述**            |
     |:---|:---|
     | responseTypes | WebHCat支持的返回类型列表。 |
        
     
   
   
   
   - 例子
     ```
     curl -i -u : --insecure --negotiate 'https://10.64.35.144:9111/templeton/v1'
     ```
     
    
2. status (GET)
   - 描述 获取当前服务器的状态
     
   
   - URL https://www.myserver.com/templeton/v1/status
     
   
   - 参数 无
     
   
   - 返回结果
     
     | **参数**  | **描述**            |
     |:---|:---|
     | status  | WebHCat连接正常，返回OK。 |
     | version | 字符串，包含版本号，比如v1。   |
        
     
   
   
   
   - 例子
     ```
     curl -i -u : --insecure --negotiate 'https://10.64.35.144:9111/templeton/v1/status'
     ```
     
    
3. version (GET)
   - 描述 获取服务器WebHCat的版本
     
   
   - URL https://www.myserver.com/templeton/v1/version
     
   
   - 参数 无
     
   
   - 返回结果
     
     | **参数**            | **描述**           |
     |:---|:---|
     | supportedVersions | 所有支持的版本。         |
     | version           | 当前服务器WebHCat的版本。 |
        
     
   
   
   
   - 例子
     ```
     curl -i -u : --insecure --negotiate 'https://10.64.35.144:9111/templeton/v1/version'
     ```
     
    
4. version/hive (GET)
   - 描述 获取服务器Hive的版本
     
   
   - URL https://www.myserver.com/templeton/v1/version/hive
     
   
   - 参数 无
     
   
   - 返回结果
     
     | **参数**  | **描述**  |
     |:---|:---|
     | module  | hive    |
     | version | Hive的版本 |
        
     
   
   
   
   - 例子
     ```
     curl -i -u : --insecure --negotiate 'https://10.64.35.144:9111/templeton/v1/version/hive'
     ```
     
    
5. version/hadoop (GET)
   - 描述 获取服务器Hadoop的版本
     
   
   - URL https://www.myserver.com/templeton/v1/version/hadoop
     
   
   - 参数 无
     
   
   - 返回结果
     
     | **参数**  | **描述**    |
     |:---|:---|
     | module  | hadoop    |
     | version | Hadoop的版本 |
        
     
   
   
   
   - 例子
     ```
     curl -i -u : --insecure --negotiate 'https://10.64.35.144:9111/templeton/v1/version/hadoop'
     ```
     
    
6. ddl (POST)
   - 描述 执行DDL语句
     
   
   - URL https://www.myserver.com/templeton/v1/ddl
     
   
   - 参数
     
     | **参数**      | **描述**                           |
     |:---|:---|
     | exec        | 需要执行的HCatalog DDL语句。             |
     | group       | 当DDL是创建表时，创建表使用的用户组。             |
     | permissions | 当DDL是创建表时，创建表使用的权限，格式为rwxr-xr-x。 |
        
     
   
   
   
   - 返回结果
     
     | **参数**   | **描述**                  |
     |:---|:---|
     | stdout   | HCatalog执行时的标准输出值，可能为空。 |
     | stderr   | HCatalog执行时的错误输出，可能为空。  |
     | exitcode | HCatalog的返回值。           |
        
     
   
   
   
   - 例子
     ```
     curl -i -u : --insecure --negotiate -d exec="show tables" 'https://10.64.35.144:9111/templeton/v1/ddl'
     ```
     
    
7. ddl/database (GET)
   - 描述 列出所有的数据库
     
   
   - URL https://www.myserver.com/templeton/v1/ddl/database
     
   
   - 参数
     
     | **参数** | **描述**          |
     |:---|:---|
     | like   | 用来匹配数据库名的正则表达式。 |
        
     
   
   
   
   - 返回结果
     
     | **参数**    | **描述** |
     |:---|:---|
     | databases | 数据库名   |
        
     
   
   
   
   - 例子
     ```
     curl -i -u : --insecure --negotiate 'https://10.64.35.144:9111/templeton/v1/ddl/database'
     ```
     
    
8. ddl/database/:db (GET)
   - 描述 获取指定数据库的详细信息
     
   
   - URL https://www.myserver.com/templeton/v1/ddl/database/:db
     
   
   - 参数
     
     | **参数** | **描述** |
     |:---|:---|
     | :db    | 数据库名   |
        
     
   
   
   
   - 返回结果
     
     | **参数**   | **描述**            |
     |:---|:---|
     | location | 数据库位置             |
     | comment  | 数据库的备注，如果没有备注则不存在 |
     | database | 数据库名              |
     | owner    | 数据库的所有者           |
     | owertype | 数据库所有者的类型         |
        
     
   
   
   
   - 例子
     ```
     curl -i -u : --insecure --negotiate 'https://10.64.35.144:9111/templeton/v1/ddl/database/default'
     ```
     
    
9. ddl/database/:db (PUT)
   - 描述 创建数据库
     
   
   - URL https://www.myserver.com/templeton/v1/ddl/database/:db
     
   
   - 参数
     
     | **参数**     | **描述**       |
     |:---|:---|
     | :db        | 数据库名         |
     | group      | 创建数据库时使用的用户组 |
     | permission | 创建数据库时使用的权限  |
     | location   | 数据库的位置       |
     | comment    | 数据库的备注，比如描述  |
     | properties | 数据库属性        |
        
     
   
   
   
   - 返回结果
     
     | **参数**   | **描述**     |
     |:---|:---|
     | database | 新创建的数据库的名字 |
        
     
   
   
   
   - 例子
     ```
     curl -i -u : --insecure --negotiate -X PUT -HContent-type:application/json -d '{"location": "/tmp/a", "comment": "my db", "properties": {"a": "b"}}' 'https://10.64.35.144:9111/templeton/v1/ddl/database/db2'
     ```
     
    
10. ddl/database/:db (DELETE)
    - 描述 删除数据库
      
    
    - URL https://www.myserver.com/templeton/v1/ddl/database/:db
      
    
    - 参数
      
      | **参数**   | **描述**                                                                         |
      |:---|:---|
      | :db      | 数据库名                                                                           |
      | ifExists | 如果指定数据库不存在，Hive会返回错误，除非设置了ifExists为true。                                       |
      | option   | 将参数设置成cascade或者restrict。如果选择cascade，将清除一切，包括数据和定义。如果选择restrict，表格内容为空，模式也将不存在。 |
         
      
    
    
    
    - 返回结果
      
      | **参数**   | **描述**   |
      |:---|:---|
      | database | 删除的数据库名字 |
         
      
    
    
    
    - 例子
      ```
      curl -i -u : --insecure --negotiate -X DELETE 'https://10.64.35.144:9111/templeton/v1/ddl/database/db3?ifExists=true'
      ```
      
     
11. ddl/database/:db/table (GET)
    - 描述 列出数据库下的所有表
      
    
    - URL https://www.myserver.com/templeton/v1/ddl/database/:db/table
      
    
    - 参数
      
      | **参数** | **描述**       |
      |:---|:---|
      | :db    | 数据库名         |
      | like   | 用来匹配表名的正则表达式 |
         
      
    
    
    
    - 返回结果
      
      | **参数**   | **描述**   |
      |:---|:---|
      | database | 数据库名字    |
      | tables   | 数据库下表名列表 |
         
      
    
    
    
    - 例子
      ```
      curl -i -u : --insecure --negotiate 'https://10.64.35.144:9111/templeton/v1/ddl/database/default/table'
      ```
      
     
12. ddl/database/:db/table/:table (GET)
    - 描述 获取表的详细信息
      
    
    - URL https://www.myserver.com/templeton/v1/ddl/database/:db/table/:table
      
    
    - 参数
      
      | **参数** | **描述**                                            |
      |:---|:---|
      | :db    | 数据库名                                              |
      | :table | 表名                                                |
      | format | 格式：format=extended，参考额外信息（"table extended like"）。 |
         
      
    
    
    
    - 返回结果
      
      | **参数**           | **描述**                 |
      |:---|:---|
      | columns          | 列名和类型                  |
      | database         | 数据库名                   |
      | table            | 表名                     |
      | partitioned      | 是否分区表，只有extended下才会显示。 |
      | location         | 表的位置，只有extended下才会显示。  |
      | outputformat     | 输出形式，只有extended下才会显示。  |
      | inputformat      | 输入形式，只有extended下才会显示。  |
      | owner            | 表的属主，只有extended下才会显示。  |
      | partitionColumns | 分区的列，只有extended下才会显示。  |
         
      
    
    
    
    - 例子
      ```
      curl -i -u : --insecure --negotiate 'https://10.64.35.144:9111/templeton/v1/ddl/database/default/table/t1?format=extended'
      ```
      
     
13. ddl/database/:db/table/:table (PUT)
    - 描述 创建表
      
    
    - URL https://www.myserver.com/templeton/v1/ddl/database/:db/table/:table
      
    
    - 参数
      
      | **参数**          | **描述**                                                                                          |
      |:---|:---|
      | :db             | 数据库名                                                                                            |
      | :table          | 新建表名                                                                                            |
      | group           | 创建表时使用的用户组                                                                                      |
      | permissions     | 创建表时使用的权限                                                                                       |
      | external        | 指定位置，hive不使用表的默认位置。                                                                             |
      | ifNotExists     | 设置为true，当表存在时不会报错。                                                                              |
      | comment         | 备注                                                                                              |
      | columns         | 列描述，包括列名，类型和可选备注。                                                                               |
      | partitionedBy   | 分区列描述，用于划分表格。参数columns列出了列名，类型和可选备注。                                                            |
      | clusteredBy     | 分桶列描述，参数包括columnNames、sortedBy、和numberOfBuckets。参数columnNames包括columnName和排列顺序（ASC为升序，DESC为降序）。 |
      | format          | 存储格式，参数包括rowFormat，storedAs，和storedBy。                                                          |
      | location        | HDFS路径                                                                                          |
      | tableProperties | 表属性和属性值（name-value对）                                                                            |
         
      
    
    
    
    - 返回结果
      
      | **参数**   | **描述** |
      |:---|:---|
      | database | 数据库名   |
      | table    | 表名     |
         
      
    
    
    
    - 例子
      ```
      curl -i -u : --insecure --negotiate -X PUT -HContent-type:application/json -d '{"columns": [{"name": "id", "type": "int"}, {"name": "name","type": "string"}], "comment": "hello","format": {"storedAs": "orc"} }' 'https://10.64.35.144:9111/templeton/v1/ddl/database/db3/table/tbl1'
      ```
      
     
14. ddl/database/:db/table/:table (POST)
    - 描述 重命名表
      
    
    - URL https://www.myserver.com/templeton/v1/ddl/database/:db/table/:table
      
    
    - 参数
      
      | **参数** | **描述** |
      |:---|:---|
      | :db    | 数据库名   |
      | :table | 已有表名   |
      | rename | 新表表名   |
         
      
    
    
    
    - 返回结果
      
      | **参数**   | **描述** |
      |:---|:---|
      | database | 数据库名   |
      | table    | 新表表名   |
         
      
    
    
    
    - 例子
      ```
      curl -i -u : --insecure --negotiate -d rename=table1 'https://10.64.35.144:9111/templeton/v1/ddl/database/default/table/tbl1'
      ```
      
     
15. ddl/database/:db/table/:table (DELETE)
    - 描述 删除表
      
    
    - URL https://www.myserver.com/templeton/v1/ddl/database/:db/table/:table
      
    
    - 参数
      
      | **参数**   | **描述**         |
      |:---|:---|
      | :db      | 数据库名           |
      | :table   | 表名             |
      | ifExists | 当设置为true时，不报错。 |
         
      
    
    
    
    - 返回结果
      
      | **参数**   | **描述** |
      |:---|:---|
      | database | 数据库名   |
      | table    | 表名     |
         
      
    
    
    
    - 例子
      ```
      curl -i -u : --insecure --negotiate -X DELETE 'https://10.64.35.144:9111/templeton/v1/ddl/database/default/table/table2?ifExists=true'
      ```
      
     
16. ddl/database/:db/table/:existingtable/like/:newtable (PUT)
    - 描述 创建一张和已经存在的表一样的表
      
    
    - URL https://www.myserver.com/templeton/v1/ddl/database/:db/table/:existingtable/like/:newtable
      
    
    - 参数
      
      | **参数**         | **描述**                     |
      |:---|:---|
      | :db            | 数据库名                       |
      | :existingtable | 已有表名                       |
      | :newtable      | 新表名                        |
      | group          | 创建表时使用的用户组。                |
      | permissions    | 创建表时使用的权限。                 |
      | external       | 指定位置，hive不使用表的默认位置。        |
      | ifNotExists    | 当设置为true时，如果表已经存在，Hive不报错。 |
      | location       | HDFS路径                     |
         
      
    
    
    
    - 返回结果
      
      | **参数**   | **描述** |
      |:---|:---|
      | database | 数据库名   |
      | table    | 表名     |
         
      
    
    
    
    - 例子
      ```
      curl -i -u : --insecure --negotiate -X PUT -HContent-type:application/json -d '{"ifNotExists": "true"}' 'https://10.64.35.144:9111/templeton/v1/ddl/database/default/table/t1/like/tt1'
      ```
      
     
17. ddl/database/:db/table/:table/partition(GET)
    - 描述 列出表的分区信息
      
    
    - URL https://www.myserver.com/templeton/v1/ddl/database/:db/table/:table/partition
      
    
    - 参数
      
      | **参数** | **描述** |
      |:---|:---|
      | :db    | 数据库名   |
      | :table | 表名     |
         
      
    
    
    
    - 返回结果
      
      | **参数**     | **描述**    |
      |:---|:---|
      | database   | 数据库名      |
      | table      | 表名        |
      | partitions | 分区属性值和分区名 |
         
      
    
    
    
    - 例子
      ```
      curl -i -u : --insecure --negotiate https://10.64.35.144:9111/templeton/v1/ddl/database/default/table/x1/partition
      ```
      
     
18. ddl/database/:db/table/:table/partition/:partition(GET)
    - 描述 列出表的某个具体分区的信息
      
    
    - URL https://www.myserver.com/templeton/v1/ddl/database/:db/table/:table/partition/:partition
      
    
    - 参数
      
      | **参数**     | **描述**                                     |
      |:---|:---|
      | :db        | 数据库名                                       |
      | :table     | 表名                                         |
      | :partition | 分区名，解码http引用时，需当心。比如country=%27algeria%27。 |
         
      
    
    
    
    - 返回结果
      
      | **参数**           | **描述**         |
      |:---|:---|
      | database         | 数据库名           |
      | table            | 表名             |
      | partition        | 分区名            |
      | partitioned      | 如果设置为true，为分区表 |
      | location         | 表的存储路径         |
      | outputFormat     | 输出格式           |
      | columns          | 列名，类型，备注       |
      | owner            | 所有者            |
      | partitionColumns | 分区的列           |
      | inputFormat      | 输入格式           |
      | totalNumberFiles | 分区下文件个数        |
      | totalFileSize    | 分区下文件总大小       |
      | maxFileSize      | 最大文件大小         |
      | minFileSize      | 最小文件大小         |
      | lastAccessTime   | 最后访问时间         |
      | lastUpdateTime   | 最后更新时间         |
         
      
    
    
    
    - 例子
      ```
      curl -i -u : --insecure --negotiate https://10.64.35.144:9111/templeton/v1/ddl/database/default/table/x1/partition/dt=1
      ```
      
     
19. ddl/database/:db/table/:table/partition/:partition(PUT)
    - 描述 增加一个表分区
      
    
    - URL https://www.myserver.com/templeton/v1/ddl/database/:db/table/:table/partition/:partition
      
    
    - 参数
      
      | **参数**      | **描述**                   |
      |:---|:---|
      | :db         | 数据库名。                    |
      | :table      | 表名。                      |
      | group       | 创建新分区时使用的用户组。            |
      | permissions | 创建新分区时用户的权限。             |
      | location    | 新分区的存放位置。                |
      | ifNotExists | 如果设置为true， 当分区已经存在，系统报错。 |
         
      
    
    
    
    - 返回结果
      
      | **参数**     | **描述** |
      |:---|:---|
      | database   | 数据库名   |
      | table      | 表名     |
      | partitions | 分区名    |
         
      
    
    
    
    - 例子
      ```
      curl -i -u : --insecure --negotiate -X PUT -HContent-type:application/json -d '{}' https://10.64.35.144:9111/templeton/v1/ddl/database/default/table/x1/partition/dt=10
      ```
      
     
20. ddl/database/:db/table/:table/partition/:partition(DELETE)
    - 描述 删除一个表分区
      
    
    - URL https://www.myserver.com/templeton/v1/ddl/database/:db/table/:table/partition/:partition
      
    
    - 参数
      
      | **参数**      | **描述**                         |
      |:---|:---|
      | :db         | 数据库名。                          |
      | :table      | 表名。                            |
      | group       | 删除新分区时使用的用户组。                  |
      | permissions | 删除新分区时用户的权限， 格式为rwxrw-r-x。     |
      | ifExists    | 如果指定分区不存在，Hive报错。参数值设置为true除外。 |
         
      
    
    
    
    - 返回结果
      
      | **参数**     | **描述** |
      |:---|:---|
      | database   | 数据库名   |
      | table      | 表名     |
      | partitions | 分区名    |
         
      
    
    
    
    - 例子
      ```
      curl -i -u : --insecure --negotiate -X DELETE -HContent-type:application/json -d '{}' https://10.64.35.144:9111/templeton/v1/ddl/database/default/table/x1/partition/dt=10
      ```
      
     
21. ddl/database/:db/table/:table/column(GET)
    - 描述 获取表的column列表
      
    
    - URL https://www.myserver.com/templeton/v1/ddl/database/:db/table/:table/column
      
    
    - 参数
      
      | **参数** | **描述** |
      |:---|:---|
      | :db    | 数据库名   |
      | :table | 表名     |
         
      
    
    
    
    - 返回结果
      
      | **参数**   | **描述** |
      |:---|:---|
      | database | 数据库名   |
      | table    | 表名     |
      | columns  | 列名字和类型 |
         
      
    
    
    
    - 例子
      ```
      curl -i -u : --insecure --negotiate https://10.64.35.144:9111/templeton/v1/ddl/database/default/table/t1/column
      ```
      
     
22. ddl/database/:db/table/:table/column/:column(GET)
    - 描述 获取表的某个具体的column的信息
      
    
    - URL https://www.myserver.com/templeton/v1/ddl/database/:db/table/:table/column/:column
      
    
    - 参数
      
      | **参数**  | **描述** |
      |:---|:---|
      | :db     | 数据库名   |
      | :table  | 表名     |
      | :column | 列名     |
         
      
    
    
    
    - 返回结果
      
      | **参数**   | **描述** |
      |:---|:---|
      | database | 数据库名   |
      | table    | 表名     |
      | column   | 列名字和类型 |
         
      
    
    
    
    - 例子
      ```
      curl -i -u : --insecure --negotiate https://10.64.35.144:9111/templeton/v1/ddl/database/default/table/t1/column/id
      ```
      
     
23. ddl/database/:db/table/:table/column/:column(PUT)
    - 描述 增加表的一列
      
    
    - URL https://www.myserver.com/templeton/v1/ddl/database/:db/table/:table/column/:column
      
    
    - 参数
      
      | **参数**  | **描述**           |
      |:---|:---|
      | :db     | 数据库名             |
      | :table  | 表名               |
      | :column | 列名               |
      | type    | 列类型，比如string和int |
      | comment | 列备注，比如描述         |
         
      
    
    
    
    - 返回结果
      
      | **参数**   | **描述** |
      |:---|:---|
      | database | 数据库名   |
      | table    | 表名     |
      | column   | 列名     |
         
      
    
    
    
    - 例子
      ```
      curl -i -u : --insecure --negotiate -X PUT -HContent-type:application/json -d '{"type": "string", "comment": "new column"}'  https://10.64.35.144:9111/templeton/v1/ddl/database/default/table/t1/column/name
      ```
      
     
24. ddl/database/:db/table/:table/property(GET)
    - 描述 获取表的property
      
    
    - URL https://www.myserver.com/templeton/v1/ddl/database/:db/table/:table/property
      
    
    - 参数
      
      | **参数** | **描述** |
      |:---|:---|
      | :db    | 数据库名   |
      | :table | 表名     |
         
      
    
    
    
    - 返回结果
      
      | **参数**     | **描述** |
      |:---|:---|
      | database   | 数据库名   |
      | table      | 表名     |
      | properties | 属性列表   |
         
      
    
    
    
    - 例子
      ```
      curl -i -u : --insecure --negotiate https://10.64.35.144:9111/templeton/v1/ddl/database/default/table/t1/property
      ```
      
     
25. ddl/database/:db/table/:table/property/:property(GET)
    - 描述 获取表的某个具体的property的值
      
    
    - URL https://www.myserver.com/templeton/v1/ddl/database/:db/table/:table/property/:property
      
    
    - 参数
      
      | **参数**    | **描述** |
      |:---|:---|
      | :db       | 数据库名   |
      | :table    | 表名     |
      | :property | 属性名    |
         
      
    
    
    
    - 返回结果
      
      | **参数**   | **描述** |
      |:---|:---|
      | database | 数据库名   |
      | table    | 表名     |
      | property | 属性列表   |
         
      
    
    
    
    - 例子
      ```
      curl -i -u : --insecure --negotiate https://10.64.35.144:9111/templeton/v1/ddl/database/default/table/t1/property/last_modified_by
      ```
      
     
26. ddl/database/:db/table/:table/property/:property(PUT)
    - 描述 增加表的property的值
      
    
    - URL https://www.myserver.com/templeton/v1/ddl/database/:db/table/:table/property/:property
      
    
    - 参数
      
      | **参数**    | **描述** |
      |:---|:---|
      | :db       | 数据库名   |
      | :table    | 表名     |
      | :property | 属性名    |
      | value     | 属性值    |
         
      
    
    
    
    - 返回结果
      
      | **参数**   | **描述** |
      |:---|:---|
      | database | 数据库名   |
      | table    | 表名     |
      | property | 属性名    |
         
      
    
    
    
    - 例子
      ```
      curl -i -u : --insecure --negotiate -X PUT -HContent-type:application/json -d '{"value": "my value"}' https://10.64.35.144:9111/templeton/v1/ddl/database/default/table/t1/property/mykey
      ```
      
     
27. mapreduce/jar(POST)
    - 描述 执行MR任务，在执行之前，需要将MR的jar包上传到HDFS中
      
    
    - URL https://www.myserver.com/templeton/v1/mapreduce/jar
      
    
    - 参数
      
      | **参数**    | **描述**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
      |:---|:---|
      | jar       | 需要执行的MR的jar包。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
      | class     | 需要执行的MR的分类。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
      | libjars   | 需要加入的classpath的jar包名，以逗号分隔。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
      | files     | 需要复制到集群的文件名，以逗号分隔。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
      | arg       | Main类接受的输入参数。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
      | define    | 设置hadoop的配置，格式为：define=NAME=VALUE。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
      | statusdir | WebHCat会将执行的MR任务的状态写入到statusdir中。如果设置了这个值，那么需要用户手动进行删除。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
      | enablelog | 如果statusdir设置，enablelog设置为true，收集Hadoop任务配置和日志到$statusdir/logs。此后，成功和失败的尝试，都将记录进日志。$statusdir/logs下，子目录布局为： logs/$job_id (directory for $job_id) logs/$job_id/job.xml.html logs/$job_id/$attempt_id (directory for $attempt_id) logs/$job_id/$attempt_id/stderr logs/$job_id/$attempt_id/stdout logs/$job_id/$attempt_id/syslog 仅支持Hadoop 1.X。 |
      | callback  | 在MR任务执行完的回调地址，使用$jobId，将任务ID嵌入回调地址。在回调地址中，任务ID替换该$jobId。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
         
      
    
    
    
    - 返回结果
      
      | **参数** | **描述**                         |
      |:---|:---|
      | id     | 任务ID，类似"job_201110132141_0001" |
         
      
    
    
    
    - 例子
      ```
      curl -i -u : --insecure --negotiate -d jar="/tmp/word.count-0.0.1-SNAPSHOT.jar" -d class=com.huawei.word.count.WD -d statusdir="/output" -d enablelog=true "https://10.64.35.144:9111/templeton/v1/mapreduce/jar"
      ```
      
     
28. mapreduce/streaming(POST)
    - 描述 以Streaming方式提交MR任务
      
    
    - URL https://www.myserver.com/templeton/v1/mapreduce/streaming
      
    
    - 参数
      
      | **参数**    | **描述**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
      |:---|:---|
      | input     | Hadoop中input的路径。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
      | output    | 存储output的路径。如没有规定，WebHCat将output储存在使用队列资源可以发现到的路径。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
      | mapper    | mapper程序位置。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
      | reducer   | reducer程序位置。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
      | files     | HDFS文件添加到分布式缓存中。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
      | arg       | 设置argument。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
      | define    | 设置hadoop的配置变量，格式：define=NAME=VALUE                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
      | cmdenv    | 设置环境变量，格式：cmdenv=NAME=VALUE                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
      | statusdir | WebHCat会将执行的MR任务的状态写入到statusdir中。如果设置了这个值，那么需要用户手动进行删除。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
      | enablelog | 如果statusdir设置，enablelog设置为true，收集Hadoop任务配置和日志到$statusdir/logs。此后，成功和失败的尝试，都将记录进日志。$statusdir/logs下，子目录布局为： logs/$job_id (directory for $job_id) logs/$job_id/job.xml.html logs/$job_id/$attempt_id (directory for $attempt_id) logs/$job_id/$attempt_id/stderr logs/$job_id/$attempt_id/stdout logs/$job_id/$attempt_id/syslog 仅支持Hadoop 1.X。 |
      | callback  | 在MR任务执行完的回调地址，使用$jobId，将任务ID嵌入回调地址。在回调地址中，任务ID将替换该$jobId。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
         
      
    
    
    
    - 返回结果
      
      | **参数** | **描述**                       |
      |:---|:---|
      | id     | 任务ID，类似job_201110132141_0001 |
         
      
    
    
    
    - 例子
      ```
      curl -i -u : --insecure --negotiate -d input=/input -d output=/oooo -d mapper=/bin/cat -d reducer="/usr/bin/wc -w" -d statusdir="/output" 'https://10.64.35.144:9111/templeton/v1/mapreduce/streaming'
      ```
      
    
    
    ![](https://support.huaweicloud.com/devg-lts-mrs/public_sys-resources/note_3.0-zh-cn.png)
    本接口的使用需要前置条件，请参阅"开发规范"中的Hive规则。
    
29. /hive(POST)
    - 描述 执行Hive命令
      
    
    - URL https://www.myserver.com/templeton/v1/hive
      
    
    - 参数
      
      | **参数**    | **描述**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
      |:---|:---|
      | execute   | hive命令，包含整个和短的Hive命令。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
      | file      | 包含hive命令的HDFS文件。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
      | files     | 需要复制到集群的文件名，以逗号分隔。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
      | arg       | 设置argument。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
      | define    | 设置hive配置，格式：define=key=value。使用post语句时需要配置实例的scratch dir。WebHCat实例使用define=hive.exec.scratchdir=**/tmp/hive-scratch** ，WebHCat1实例使用define=hive.exec.scratchdir=**/tmp/hive1-scratch**，以此类推。                                                                                                                                                                                                                                                                                                                                         |
      | statusdir | WebHCat会将执行的MR任务的状态写入到statusdir中。如果设置了这个值，那么需要用户手动进行删除。                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
      | enablelog | 如果statusdir设置，enablelog设置为true，收集Hadoop任务配置和日志到$statusdir/logs。此后，成功和失败的尝试，都将记录进日志。$statusdir/logs下，子目录布局为： logs/$job_id (directory for $job_id) logs/$job_id/job.xml.html logs/$job_id/$attempt_id (directory for $attempt_id) logs/$job_id/$attempt_id/stderr logs/$job_id/$attempt_id/stdout logs/$job_id/$attempt_id/syslog |
      | callback  | 在MR任务执行完的回调地址，使用$jobId，将任务ID嵌入回调地址。在回调地址中，任务ID将替换该$jobId。                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
         
      
    
    
    
    - 返回结果
      
      | **参数** | **描述**                       |
      |:---|:---|
      | id     | 任务ID，类似job_201110132141_0001 |
         
      
    
    
    
    - 例子
      ```
      curl -i -u : --insecure --negotiate -d execute="select count(*) from t1" -d define=hive.exec.scratchdir=/tmp/hive-scratch -d statusdir="/output" "https://10.64.35.144:9111/templeton/v1/hive"
      ```
      
     
30. jobs(GET)
    - 描述 获取所有的job id
      
    
    - URL https://www.myserver.com/templeton/v1/jobs
      
    
    - 参数
      
      | **参数**     | **描述**                                                                                                                                                                                |
      |:---|:---|
      | fields     | 如果设置成\*，那么会返回每个job的详细信息。如果没设置，只返回任务ID。现在只能设置成\*，如设置成其他值，将出现异常。                                                                                                                        |
      | jobid      | 如果设置了jobid，那么只有字典顺序比jobid大的job才会返回。比如，如果jobid为"job_201312091733_0001"，只有大于该值的job才能返回。返回的job的个数，取决于numrecords。                                                                         |
      | numrecords | 如果设置了numrecords和jobid，jobid列表按字典顺序排列，待jobid返回后，可以得到numrecords的最大值。如果jobid没有设置， 而numrecords设置了参数值，jobid按字典顺序排列后，可以得到numrecords的最大值。相反，如果numrecords没有设置，而jobid设置了参数值，所有大于jobid的job都将返回。 |
      | showall    | 如果设置为true，用户可以浏览的所有job都将返回。不仅仅是用户所拥有的job。                                                                                                                                             |
         
      
    
    
    
    - 返回结果
      
      | 参数     | 描述                                   |
      |:---|:---|
      | id     | Job id                               |
      | detail | 如果showall为true，那么显示detail信息，否则为null。 |
         
      
    
    
    
    - 例子
      ```
      curl -i -u : --insecure --negotiate  "https://10.64.35.144:9111/templeton/v1/jobs"
      ```
      
     
31. jobs/:jobid(GET)
    - 描述 获取指定job的信息
      
    
    - URL https://www.myserver.com/templeton/v1/jobs/:jobid
      
    
    - 参数
      
      | 参数    | 描述           |
      |:---|:---|
      | jobid | Job创建后的Jobid |
         
      
    
    
    
    - 返回结果
      
      | 参数              | 描述                                                          |
      |:---|:---|
      | status          | 包含job状态信息的json对象。                                           |
      | profile         | 包含job状态的json对象。WebHCat解析JobProfile对象中的信息，该对象因Hadoop版本不同而不同。 |
      | id              | Job的id。                                                     |
      | percentComplete | 完成百分比，比如75% complete，如果完成后则为null。                           |
      | user            | 创建job的用户。                                                   |
      | callback        | 回调URL（如果有）。                                                 |
      | userargs        | 用户提交job时的argument参数和参数值。                                    |
      | exitValue       | job退出值。                                                     |
         
      
    
    
    
    - 例子
      ```
      curl -i -u : --insecure --negotiate  "https://10.64.35.144:9111/templeton/v1/jobs/job_1440386556001_0255"
      ```
      
     
32. jobs/:jobid(DELETE)
    - 描述 kill任务
      
    
    - URL https://www.myserver.com/templeton/v1/jobs/:jobid
      
    
    - 参数
      
      | 参数     | 描述        |
      |:---|:---|
      | :jobid | 删除的Job的ID |
         
      
    
    
    
    - 返回结果
      
      | 参数       | 描述                                                          |
      |:---|:---|
      | user     | 提交Job的用户。                                                   |
      | status   | 包含Job状态信息的JSON对象。                                           |
      | profile  | 包含Job信息的JSON对象。WebHCat解析JobProfile对象中的信息，该对象因Hadoop版本不同而不同。 |
      | id       | Job的ID。                                                     |
      | callback | 回调的URL（如果有）。                                                |
         
      
    
    
    
    - 例子
      ```
      curl -i -u : --insecure --negotiate -X DELETE  "https://10.64.35.143:9111/templeton/v1/jobs/job_1440386556001_0265"
      ```
      
     
 
