Hive WebHCat接口介绍
- 以下示例的IP为WebHCat的业务IP,端口为安装时设置的WebHCat HTTP端口。
- 需要在安装客户端的机器上进行kinit认证操作后才可执行示例操作。
- 以下示例均为https协议的示例,若要使用http协议,需要执行以下操作:
- 将REST接口切换成HTTP协议方式,请参见配置基于HTTPS/HTTP协议的REST接口。
- 将示例中的“--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 -V
- :version(GET)
- 描述
- URL
- 参数
参数
描述
:version
WebHCat版本号(当前必须是v1)。
- 返回结果
参数
描述
responseTypes
WebHCat支持的返回类型列表。
- 例子
curl -i -u : --insecure --negotiate 'https://10.64.35.144:9111/templeton/v1'
- status (GET)
- 描述
- URL
- 参数
- 返回结果
参数
描述
status
WebHCat连接正常,返回OK。
version
字符串,包含版本号,比如v1。
- 例子
curl -i -u : --insecure --negotiate 'https://10.64.35.144:9111/templeton/v1/status'
- version (GET)
- 描述
- URL
- 参数
- 返回结果
参数
描述
supportedVersions
所有支持的版本
version
当前服务器WebHCat的版本
- 例子
curl -i -u : --insecure --negotiate 'https://10.64.35.144:9111/templeton/v1/version'
- version/hive (GET)
- 描述
- URL
- 参数
- 返回结果
参数
描述
module
hive
version
Hive的版本
- 例子
curl -i -u : --insecure --negotiate 'https://10.64.35.144:9111/templeton/v1/version/hive'
- version/hadoop (GET)
- 描述
- URL
- 参数
- 返回结果
参数
描述
module
hadoop
version
Hadoop的版本
- 例子
curl -i -u : --insecure --negotiate 'https://10.64.35.144:9111/templeton/v1/version/hadoop'
- ddl (POST)
- 描述
- URL
- 参数
参数
描述
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'
- ddl/database (GET)
- 返回结果
参数
描述
databases
数据库名
- 例子
curl -i -u : --insecure --negotiate 'https://10.64.35.144:9111/templeton/v1/ddl/database'
- 返回结果
- ddl/database/:db (GET)
- 返回结果
参数
描述
location
数据库位置
comment
数据库的备注,如果没有备注则不存在
database
数据库名
owner
数据库的所有者
owertype
数据库所有者的类型
- 例子
curl -i -u : --insecure --negotiate 'https://10.64.35.144:9111/templeton/v1/ddl/database/default'
- 返回结果
- ddl/database/:db (PUT)
- 描述
- URL
- 参数
参数
描述
: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'
- ddl/database/:db (DELETE)
- 描述
- URL
- 参数
参数
描述
: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'
- 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'
- 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'
- 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'
- 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'
- 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'
- 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'
- 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
- 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
- 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
- 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
- ddl/database/:db/table/:table/column(GET)
- 描述
- 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
- ddl/database/:db/table/:table/column/:column(GET)
- 描述
- 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
- 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
- ddl/database/:db/table/:table/property(GET)
- 描述
- 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
- ddl/database/:db/table/:table/property/:property(GET)
- 描述
- 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
- ddl/database/:db/table/:table/property/:property(PUT)
- 描述
- 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
- mapreduce/jar(POST)
- 描述
- URL
- 参数
参数
描述
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"
- mapreduce/streaming(POST)
- 描述
- URL
- 参数
参数
描述
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'
- /hive(POST)
- 描述
- URL
- 参数
参数
描述
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"
- jobs(GET)
- 描述
- URL
- 参数
参数
描述
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"
- jobs/:jobid(GET)
- 返回结果
参数
描述
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"
- 返回结果
- jobs/:jobid(DELETE)
- 返回结果
参数
描述
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"
- 返回结果