[
https://issues.apache.org/jira/browse/HIVE-4569?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13675698#comment-13675698
]
Jaideep Dhok commented on HIVE-4569:
------------------------------------
Update on the work done so far -
# h5. Added getQueryPlan API with Thrift
# h5. Added support for non-blocking queries.
## Right now I have done this by passing a boolean flag while calling
executeStatement
## If the flag is set to true, query runs in non-blocking mode. The flag
defaults to false.
## I've implemented this by adding a fixed size thread pool in the
OperationManager, for running non-blocking operations. A reference to the
future is kept in the operation, so that it can be cancelled.
## Once the query is running in the background, users can poll status using
GetOperationStatus.
## Users can cancel the query by calling CancelOperation
# h5. Additions in GetOperationStatus
## OperationManager calls operation.getTaskStatuses(), Each operation can
override this method to customize reporting
## SQLOperation returns the task statuses by calling getTaskStatuses() on the
current driver.
## Driver reports task statuses by iterating through all tasks in the plan
## Changes in HS2 thrift API -
{code}
// GetOperationStatus()
//
// Get the status of an operation running on the server.
struct TGetOperationStatusReq {
// Session to run this request against
1: required TOperationHandle operationHandle
}
// State of a sub task in an operation
enum TTaskState {
// The task has been initialized
INITIALIZED_STATE,
// Driver is currently running the task
RUNNING_STATE,
// Task is completed
FINISHED_STATE,
// Task is queued in the driver
QUEUED_STATE,
// State is unkown
UNKOWN_STATE
}
// Status of a sub task in an operation
struct TTaskStatus {
// Task ID
1: required string taskId
// External ID for this task, For example MapRedTask can return job ID of the
Hadoop job
2: optional string externalHandle
// Current state of the task as seen by driver
3: required TTaskState state
}
struct TGetOperationStatusResp {
1: required TStatus status
// State of the whole operation
2: optional TOperationState operationState
// List of statuses of sub tasks
3: optional list<TTaskStatus> taskStatuses
}
{code}
h5. Things pending as of now
# If the Task runs in a sub-process, then external handle (job ID) is returned
as null.
> GetQueryPlan api in Hive Server2
> --------------------------------
>
> Key: HIVE-4569
> URL: https://issues.apache.org/jira/browse/HIVE-4569
> Project: Hive
> Issue Type: Bug
> Components: HiveServer2
> Reporter: Amareshwari Sriramadasu
> Assignee: Jaideep Dhok
> Attachments: git-4569.patch, HIVE-4569.D10887.1.patch
>
>
> It would nice to have GetQueryPlan as thrift api. I do not see GetQueryPlan
> api available in HiveServer2, though the wiki
> https://cwiki.apache.org/confluence/display/Hive/HiveServer2+Thrift+API
> contains, not sure why it was not added.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira