REST Endpoint REST endpoint 允许用户通过 REST API 连接 SQL Gateway。
Overview of SQL Processing Open Session 当客户端连接到 SQL Gateway 时,SQL Gateway 会创建一个 Session
,存储客户端和 SQL Gateway 交互期间的用户相关信息。 创建 Session
后,SQL Gateway 会返回 SessionHandle
标识,用于后续的交互。
Submit SQL 注册 Session
后,客户端能够提交 SQL 到 SQL Gateway。提交 SQL 后,SQL 会被转换成 Operation
,并且返回 OperationHandle
标识,用于用户后续获取结果。 Operation 有它的生命周期,客户端可以取消正在执行的 Operation
,或者关闭 Operation
并释放它使用的资源。
Fetch Results 客户端可以通过 OperationHandle
从 Operation
获取结果。当一个 Operation
已经就绪,SQL Gateway 将返回一个包含对应 schema 和 URI 的批式数据, URI 可以被用来获取下一个批式数据。当所有结果已经获取完成,SQL Gateway 会将结果中的 resultType
设置为 EOS
,并且将获取下一个批式数据的 URI 设置为 null。
Endpoint Options Key Default Type Description sql-gateway.endpoint.rest.address (none) String 客户端通过该地址连接到 SQL Gateway 服务。 sql-gateway.endpoint.rest.bind-address (none) String SQL Gateway 服务绑定的地址。 sql-gateway.endpoint.rest.bind-port “8083” String SQL Gateway 服务绑定的端口号。接受端口列表 (“50100,50101”)或端口区间(“50100-50200”),也可以两种方式混用。为了避免同一台机器上运行多个 SQL Gateway 服务引起的端口冲突,建议设置为端口区间。 sql-gateway.endpoint.rest.port 8083 Integer 客户端连接的端口号。如果 bind-port 没有被指定,SQL Gateway 服务将会绑定这个端口。
REST API OpenAPI 规范如下,默认版本是 v2。
OpenAPI 规范目前仍处于实验阶段。
API reference v2
/api_versions Verb: GET
Response code: 200 OK
Get the current available versions for the Rest Endpoint. The client can choose one of the return version as the protocol for later communicate. Request {}
Response {
“ type ” : “ object ”,
“ id ” : “ urn : jsonschema : org : apache : flink : table : gateway : rest : message : util : GetApiVersionResponseBody ”,
“ properties ” : {
“ versions ” : {
“ type ” : “ array ”,
“ items ” : {
“ type ” : “ string ”
}
}
}
}
/info Verb: GET
Response code: 200 OK
Get meta data for this cluster. Request {}
Response {
“ type ” : “ object ”,
“ id ” : “ urn : jsonschema : org : apache : flink : table : gateway : rest : message : util : GetInfoResponseBody ”,
“ properties ” : {
“ productName ” : {
“ type ” : “ string ”
},
“ version ” : {
“ type ” : “ string ”
}
}
}
/sessions Verb: POST
Response code: 200 OK
Opens a new session with specific properties. Specific properties can be given for current session which will override the default properties of gateway. Request {
“ type ” : “ object ”,
“ id ” : “ urn : jsonschema : org : apache : flink : table : gateway : rest : message : session : OpenSessionRequestBody ”,
“ properties ” : {
“ properties ” : {
“ type ” : “ object ”,
“ additionalProperties ” : {
“ type ” : “ string ”
}
},
“ sessionName ” : {
“ type ” : “ string ”
}
}
}
Response {
“ type ” : “ object ”,
“ id ” : “ urn : jsonschema : org : apache : flink : table : gateway : rest : message : session : OpenSessionResponseBody ”,
“ properties ” : {
“ sessionHandle ” : {
“ type ” : “ string ”
}
}
}
/sessions/:session_handle Verb: DELETE
Response code: 200 OK
Closes the specific session. Path parameters session_handle
- The SessionHandle that identifies a session.Request {}
Response {
“ type ” : “ object ”,
“ id ” : “ urn : jsonschema : org : apache : flink : table : gateway : rest : message : session : CloseSessionResponseBody ”,
“ properties ” : {
“ status ” : {
“ type ” : “ string ”
}
}
}
/sessions/:session_handle Verb: GET
Response code: 200 OK
Get the session configuration. Path parameters session_handle
- The SessionHandle that identifies a session.Request {}
Response {
“ type ” : “ object ”,
“ id ” : “ urn : jsonschema : org : apache : flink : table : gateway : rest : message : session : GetSessionConfigResponseBody ”,
“ properties ” : {
“ properties ” : {
“ type ” : “ object ”,
“ additionalProperties ” : {
“ type ” : “ string ”
}
}
}
}
/sessions/:session_handle/complete-statement Verb: GET
Response code: 200 OK
Get the completion hints for the given statement at the given position. Path parameters session_handle
- The SessionHandle that identifies a session.Request {
“ type ” : “ object ”,
“ id ” : “ urn : jsonschema : org : apache : flink : table : gateway : rest : message : statement : CompleteStatementRequestBody ”,
“ properties ” : {
“ position ” : {
“ type ” : “ integer ”
},
“ statement ” : {
“ type ” : “ string ”
}
}
}
Response {
“ type ” : “ object ”,
“ id ” : “ urn : jsonschema : org : apache : flink : table : gateway : rest : message : statement : CompleteStatementResponseBody ”,
“ properties ” : {
“ candidates ” : {
“ type ” : “ array ”,
“ items ” : {
“ type ” : “ string ”
}
}
}
}
/sessions/:session_handle/configure-session Verb: POST
Response code: 200 OK
Configures the session with the statement which could be: CREATE TABLE, DROP TABLE, ALTER TABLE, CREATE DATABASE, DROP DATABASE, ALTER DATABASE, CREATE FUNCTION, DROP FUNCTION, ALTER FUNCTION, CREATE CATALOG, DROP CATALOG, USE CATALOG, USE [CATALOG.]DATABASE, CREATE VIEW, DROP VIEW, LOAD MODULE, UNLOAD MODULE, USE MODULE, ADD JAR. Path parameters session_handle
- The SessionHandle that identifies a session.Request {
“ type ” : “ object ”,
“ id ” : “ urn : jsonschema : org : apache : flink : table : gateway : rest : message : session : ConfigureSessionRequestBody ”,
“ properties ” : {
“ executionTimeout ” : {
“ type ” : “ integer ”
},
“ statement ” : {
“ type ” : “ string ”
}
}
}
Response {}
/sessions/:session_handle/heartbeat Verb: POST
Response code: 200 OK
Trigger heartbeat to tell the server that the client is active, and to keep the session alive as long as configured timeout value. Path parameters session_handle
- The SessionHandle that identifies a session.Request {}
Response {}
/sessions/:session_handle/operations/:operation_handle/cancel Verb: POST
Response code: 200 OK
Cancel the operation. Path parameters session_handle
- The SessionHandle that identifies a session.operation_handle
- The OperationHandle that identifies a operation.Request {}
Response {
“ type ” : “ object ”,
“ id ” : “ urn : jsonschema : org : apache : flink : table : gateway : rest : message : operation : OperationStatusResponseBody ”,
“ properties ” : {
“ status ” : {
“ type ” : “ string ”
}
}
}
/sessions/:session_handle/operations/:operation_handle/close Verb: DELETE
Response code: 200 OK
Close the operation. Path parameters session_handle
- The SessionHandle that identifies a session.operation_handle
- The OperationHandle that identifies a operation.Request {}
Response {
“ type ” : “ object ”,
“ id ” : “ urn : jsonschema : org : apache : flink : table : gateway : rest : message : operation : OperationStatusResponseBody ”,
“ properties ” : {
“ status ” : {
“ type ” : “ string ”
}
}
}
/sessions/:session_handle/operations/:operation_handle/result/:token Verb: GET
Response code: 200 OK
Fetch results of Operation. Path parameters session_handle
- The SessionHandle that identifies a session.operation_handle
- The OperationHandle that identifies a operation.token
- The OperationHandle that identifies a operation.Query parameters rowFormat
(mandatory): The row format to serialize the RowData.Request {}
Response {
“ type ” : “ any ”
}
/sessions/:session_handle/operations/:operation_handle/status Verb: GET
Response code: 200 OK
Get the status of operation. Path parameters session_handle
- The SessionHandle that identifies a session.operation_handle
- The OperationHandle that identifies a operation.Request {}
Response {
“ type ” : “ object ”,
“ id ” : “ urn : jsonschema : org : apache : flink : table : gateway : rest : message : operation : OperationStatusResponseBody ”,
“ properties ” : {
“ status ” : {
“ type ” : “ string ”
}
}
}
/sessions/:session_handle/statements Verb: POST
Response code: 200 OK
Execute a statement. Path parameters session_handle
- The SessionHandle that identifies a session.Request {
“ type ” : “ object ”,
“ id ” : “ urn : jsonschema : org : apache : flink : table : gateway : rest : message : statement : ExecuteStatementRequestBody ”,
“ properties ” : {
“ executionConfig ” : {
“ type ” : “ object ”,
“ additionalProperties ” : {
“ type ” : “ string ”
}
},
“ executionTimeout ” : {
“ type ” : “ integer ”
},
“ statement ” : {
“ type ” : “ string ”
}
}
}
Response {
“ type ” : “ object ”,
“ id ” : “ urn : jsonschema : org : apache : flink : table : gateway : rest : message : statement : ExecuteStatementResponseBody ”,
“ properties ” : {
“ operationHandle ” : {
“ type ” : “ string ”
}
}
}
v1
/api_versions Verb: GET
Response code: 200 OK
Get the current available versions for the Rest Endpoint. The client can choose one of the return version as the protocol for later communicate. Request {}
Response {
“ type ” : “ object ”,
“ id ” : “ urn : jsonschema : org : apache : flink : table : gateway : rest : message : util : GetApiVersionResponseBody ”,
“ properties ” : {
“ versions ” : {
“ type ” : “ array ”,
“ items ” : {
“ type ” : “ string ”
}
}
}
}
/info Verb: GET
Response code: 200 OK
Get meta data for this cluster. Request {}
Response {
“ type ” : “ object ”,
“ id ” : “ urn : jsonschema : org : apache : flink : table : gateway : rest : message : util : GetInfoResponseBody ”,
“ properties ” : {
“ productName ” : {
“ type ” : “ string ”
},
“ version ” : {
“ type ” : “ string ”
}
}
}
/sessions Verb: POST
Response code: 200 OK
Opens a new session with specific properties. Specific properties can be given for current session which will override the default properties of gateway. Request {
“ type ” : “ object ”,
“ id ” : “ urn : jsonschema : org : apache : flink : table : gateway : rest : message : session : OpenSessionRequestBody ”,
“ properties ” : {
“ properties ” : {
“ type ” : “ object ”,
“ additionalProperties ” : {
“ type ” : “ string ”
}
},
“ sessionName ” : {
“ type ” : “ string ”
}
}
}
Response {
“ type ” : “ object ”,
“ id ” : “ urn : jsonschema : org : apache : flink : table : gateway : rest : message : session : OpenSessionResponseBody ”,
“ properties ” : {
“ sessionHandle ” : {
“ type ” : “ string ”
}
}
}
/sessions/:session_handle Verb: DELETE
Response code: 200 OK
Closes the specific session. Path parameters session_handle
- The SessionHandle that identifies a session.Request {}
Response {
“ type ” : “ object ”,
“ id ” : “ urn : jsonschema : org : apache : flink : table : gateway : rest : message : session : CloseSessionResponseBody ”,
“ properties ” : {
“ status ” : {
“ type ” : “ string ”
}
}
}
/sessions/:session_handle Verb: GET
Response code: 200 OK
Get the session configuration. Path parameters session_handle
- The SessionHandle that identifies a session.Request {}
Response {
“ type ” : “ object ”,
“ id ” : “ urn : jsonschema : org : apache : flink : table : gateway : rest : message : session : GetSessionConfigResponseBody ”,
“ properties ” : {
“ properties ” : {
“ type ” : “ object ”,
“ additionalProperties ” : {
“ type ” : “ string ”
}
}
}
}
/sessions/:session_handle/heartbeat Verb: POST
Response code: 200 OK
Trigger heartbeat to tell the server that the client is active, and to keep the session alive as long as configured timeout value. Path parameters session_handle
- The SessionHandle that identifies a session.Request {}
Response {}
/sessions/:session_handle/operations/:operation_handle/cancel Verb: POST
Response code: 200 OK
Cancel the operation. Path parameters session_handle
- The SessionHandle that identifies a session.operation_handle
- The OperationHandle that identifies a operation.Request {}
Response {
“ type ” : “ object ”,
“ id ” : “ urn : jsonschema : org : apache : flink : table : gateway : rest : message : operation : OperationStatusResponseBody ”,
“ properties ” : {
“ status ” : {
“ type ” : “ string ”
}
}
}
/sessions/:session_handle/operations/:operation_handle/close Verb: DELETE
Response code: 200 OK
Close the operation. Path parameters session_handle
- The SessionHandle that identifies a session.operation_handle
- The OperationHandle that identifies a operation.Request {}
Response {
“ type ” : “ object ”,
“ id ” : “ urn : jsonschema : org : apache : flink : table : gateway : rest : message : operation : OperationStatusResponseBody ”,
“ properties ” : {
“ status ” : {
“ type ” : “ string ”
}
}
}
/sessions/:session_handle/operations/:operation_handle/result/:token Verb: GET
Response code: 200 OK
Fetch results of Operation. Path parameters session_handle
- The SessionHandle that identifies a session.operation_handle
- The OperationHandle that identifies a operation.token
- The OperationHandle that identifies a operation.Request {}
Response {
“ type ” : “ any ”
}
/sessions/:session_handle/operations/:operation_handle/status Verb: GET
Response code: 200 OK
Get the status of operation. Path parameters session_handle
- The SessionHandle that identifies a session.operation_handle
- The OperationHandle that identifies a operation.Request {}
Response {
“ type ” : “ object ”,
“ id ” : “ urn : jsonschema : org : apache : flink : table : gateway : rest : message : operation : OperationStatusResponseBody ”,
“ properties ” : {
“ status ” : {
“ type ” : “ string ”
}
}
}
/sessions/:session_handle/statements Verb: POST
Response code: 200 OK
Execute a statement. Path parameters session_handle
- The SessionHandle that identifies a session.Request {
“ type ” : “ object ”,
“ id ” : “ urn : jsonschema : org : apache : flink : table : gateway : rest : message : statement : ExecuteStatementRequestBody ”,
“ properties ” : {
“ executionConfig ” : {
“ type ” : “ object ”,
“ additionalProperties ” : {
“ type ” : “ string ”
}
},
“ executionTimeout ” : {
“ type ” : “ integer ”
},
“ statement ” : {
“ type ” : “ string ”
}
}
}
Response {
“ type ” : “ object ”,
“ id ” : “ urn : jsonschema : org : apache : flink : table : gateway : rest : message : statement : ExecuteStatementResponseBody ”,
“ properties ” : {
“ operationHandle ” : {
“ type ” : “ string ”
}
}
}
Data Type Mapping 目前 REST endpoint 支持使用查询参数 rowFormat
序列化 RowData
。REST endpoint 使用 JSON 序列化 Table 对象。 请参考 JSON format 查看类型映射关系。
REST endpoint 也支持 PLAIN_TEXT
序列化 RowData
,将所有列自动转换成 String
。