[
https://issues.apache.org/jira/browse/HAWQ-459?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Oleksandr Diachenko updated HAWQ-459:
-------------------------------------
Description:
Currently we have *pxf/v14/Metadata/getTableMetadata* endpoint, which takes
*table* as a path parameter and returns metadata for one given table.
Idea is to enhance this endpoint to support more advanced predicates, to
specify expressions for schema, table and database.
h1.Method supported
||*name*||
|GET|
h1.Path mapped
pxf/<protocolVersion>/Metadata/getObjectsMetadata
h1.Input parameters:
||*name*||
|object|
|container|
Each parameter is comma-separated list of strings, might also contain asterisk
wildcard.
Method should filter result set against all provided parameters, using AND
operator.
In case of Hive, objects corresponds to tables, containers corresponds to
databases/schemas.
In case of HBase, objects=tables, containers=schemas.
In case of HDFS, objects=files, containers=folders.
h1. HTTP return codes:
||*code*||*meaning*||
|200|found some result set|
|404|didn't find any results for given parameters, empty result set|
|405|called method other than GET|
|500|unable to access underlying metastore(hive, hbase, hdfs etc), some other
exceptions|
h1. Return data format for 200 code:
{code}
{
"PXFMetadata":[
{
"object":{
"containerName":"default",
"objectName":"abc"
},
"fields":[
{
"name":"a",
"type":"int"
},
{
"name":"b",
"type":"float"
}
]
},
{
"object":{
"containerName":"default",
"objectName":"abcdef"
},
"fields":[
{
"name":"a",
"type":"int"
},
{
"name":"b",
"type":"float"
}
]
},
{
"object":{
"containerName":"default",
"objectName":"abcdefghk"
},
"fields":[
{
"name":"a",
"type":"int"
},
{
"name":"b",
"type":"float"
}
]
}
]
}
{code}
h1. Return data format for 404 code:
{code}
{
"PXFMetadata":[]
}
{code}
h1. Return data format for 500 code:
{code}
{
"PXFError":{"code" : "XXX1", "message" : "Unable to reach Hive metastore"}
}
{code}
h1. Examples
Request:
{code}
curl -i
"http://localhost:51200/pxf/v14/Metadata/getObjectsMetadata?objects=abc*&containers=default"
{code}
Response:
{code}
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Feb 2016 03:33:53 GMT
{
"PXFMetadata":[
{
"object":{
"containerName":"default",
"objectName":"abc"
},
"fields":[
{
"name":"a",
"type":"int"
},
{
"name":"b",
"type":"float"
}
]
},
{
"object":{
"containerName":"default",
"objectName":"abcdef"
},
"fields":[
{
"name":"a",
"type":"int"
},
{
"name":"b",
"type":"float"
}
]
},
{
"object":{
"containerName":"default",
"objectName":"abcdefghk"
},
"fields":[
{
"name":"a",
"type":"int"
},
{
"name":"b",
"type":"float"
}
]
}
]
}
{code}
was:
Currently we have *pxf/v14/Metadata/getTableMetadata* endpoint, which takes
*table* as a path parameter and returns metadata for one given table.
Idea is to enhance this endpoint to support more advanced predicates, to
specify expressions for schema, table and database.
h1.Method supported
||*name*||
|GET|
h1.Path mapped
pxf/<protocolVersion>/Metadata/getObjectsMetadata
h1.Input parameters:
||*name*||
|objects|
|containers|
Each parameter is comma-separated list of strings, might also contain asterisk
wildcard.
Method should filter result set against all provided parameters, using AND
operator.
In case of Hive, objects corresponds to tables, containers corresponds to
databases/schemas.
In case of HBase, objects=tables, containers=schemas.
In case of HDFS, objects=files, containers=folders.
h1. HTTP return codes:
||*code*||*meaning*||
|200|found some result set|
|404|didn't find any results for given parameters, empty result set|
|405|called method other than GET|
|500|unable to access underlying metastore(hive, hbase, hdfs etc), some other
exceptions|
h1. Return data format for 200 code:
{code}
{
"PXFMetadata":[
{
"object":{
"containerName":"default",
"objectName":"abc"
},
"fields":[
{
"name":"a",
"type":"int"
},
{
"name":"b",
"type":"float"
}
]
},
{
"object":{
"containerName":"default",
"objectName":"abcdef"
},
"fields":[
{
"name":"a",
"type":"int"
},
{
"name":"b",
"type":"float"
}
]
},
{
"object":{
"containerName":"default",
"objectName":"abcdefghk"
},
"fields":[
{
"name":"a",
"type":"int"
},
{
"name":"b",
"type":"float"
}
]
}
]
}
{code}
h1. Return data format for 404 code:
{code}
{
"PXFMetadata":[]
}
{code}
h1. Return data format for 500 code:
{code}
{
"PXFError":{"code" : "XXX1", "message" : "Unable to reach Hive metastore"}
}
{code}
h1. Examples
Request:
{code}
curl -i
"http://localhost:51200/pxf/v14/Metadata/getObjectsMetadata?objects=abc*&containers=default"
{code}
Response:
{code}
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Type: application/json
Transfer-Encoding: chunked
Date: Fri, 26 Feb 2016 03:33:53 GMT
{
"PXFMetadata":[
{
"object":{
"containerName":"default",
"objectName":"abc"
},
"fields":[
{
"name":"a",
"type":"int"
},
{
"name":"b",
"type":"float"
}
]
},
{
"object":{
"containerName":"default",
"objectName":"abcdef"
},
"fields":[
{
"name":"a",
"type":"int"
},
{
"name":"b",
"type":"float"
}
]
},
{
"object":{
"containerName":"default",
"objectName":"abcdefghk"
},
"fields":[
{
"name":"a",
"type":"int"
},
{
"name":"b",
"type":"float"
}
]
}
]
}
{code}
> Enhance Metadata Rest API to support table(s)
> ---------------------------------------------
>
> Key: HAWQ-459
> URL: https://issues.apache.org/jira/browse/HAWQ-459
> Project: Apache HAWQ
> Issue Type: Sub-task
> Components: Hcatalog, PXF
> Reporter: Shivram Mani
> Assignee: Shivram Mani
> Fix For: 2.0.0
>
>
> Currently we have *pxf/v14/Metadata/getTableMetadata* endpoint, which takes
> *table* as a path parameter and returns metadata for one given table.
> Idea is to enhance this endpoint to support more advanced predicates, to
> specify expressions for schema, table and database.
> h1.Method supported
> ||*name*||
> |GET|
> h1.Path mapped
> pxf/<protocolVersion>/Metadata/getObjectsMetadata
> h1.Input parameters:
> ||*name*||
> |object|
> |container|
> Each parameter is comma-separated list of strings, might also contain
> asterisk wildcard.
> Method should filter result set against all provided parameters, using AND
> operator.
> In case of Hive, objects corresponds to tables, containers corresponds to
> databases/schemas.
> In case of HBase, objects=tables, containers=schemas.
> In case of HDFS, objects=files, containers=folders.
> h1. HTTP return codes:
> ||*code*||*meaning*||
> |200|found some result set|
> |404|didn't find any results for given parameters, empty result set|
> |405|called method other than GET|
> |500|unable to access underlying metastore(hive, hbase, hdfs etc), some other
> exceptions|
> h1. Return data format for 200 code:
> {code}
> {
> "PXFMetadata":[
> {
> "object":{
> "containerName":"default",
> "objectName":"abc"
> },
> "fields":[
> {
> "name":"a",
> "type":"int"
> },
> {
> "name":"b",
> "type":"float"
> }
> ]
> },
> {
> "object":{
> "containerName":"default",
> "objectName":"abcdef"
> },
> "fields":[
> {
> "name":"a",
> "type":"int"
> },
> {
> "name":"b",
> "type":"float"
> }
> ]
> },
> {
> "object":{
> "containerName":"default",
> "objectName":"abcdefghk"
> },
> "fields":[
> {
> "name":"a",
> "type":"int"
> },
> {
> "name":"b",
> "type":"float"
> }
> ]
> }
> ]
> }
> {code}
> h1. Return data format for 404 code:
> {code}
> {
> "PXFMetadata":[]
> }
> {code}
> h1. Return data format for 500 code:
> {code}
> {
> "PXFError":{"code" : "XXX1", "message" : "Unable to reach Hive metastore"}
> }
> {code}
> h1. Examples
> Request:
> {code}
> curl -i
> "http://localhost:51200/pxf/v14/Metadata/getObjectsMetadata?objects=abc*&containers=default"
>
> {code}
> Response:
> {code}
> HTTP/1.1 200 OK
> Server: Apache-Coyote/1.1
> Content-Type: application/json
> Transfer-Encoding: chunked
> Date: Fri, 26 Feb 2016 03:33:53 GMT
> {
> "PXFMetadata":[
> {
> "object":{
> "containerName":"default",
> "objectName":"abc"
> },
> "fields":[
> {
> "name":"a",
> "type":"int"
> },
> {
> "name":"b",
> "type":"float"
> }
> ]
> },
> {
> "object":{
> "containerName":"default",
> "objectName":"abcdef"
> },
> "fields":[
> {
> "name":"a",
> "type":"int"
> },
> {
> "name":"b",
> "type":"float"
> }
> ]
> },
> {
> "object":{
> "containerName":"default",
> "objectName":"abcdefghk"
> },
> "fields":[
> {
> "name":"a",
> "type":"int"
> },
> {
> "name":"b",
> "type":"float"
> }
> ]
> }
> ]
> }
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)