You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hive.apache.org by "Amruth S (JIRA)" <ji...@apache.org> on 2016/03/30 08:28:25 UTC
[jira] [Commented] (HIVE-4617) Asynchronous execution in
HiveServer2 to run a query in non-blocking mode
[ https://issues.apache.org/jira/browse/HIVE-4617?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15217491#comment-15217491 ]
Amruth S commented on HIVE-4617:
--------------------------------
Hi, I am trying to asynchronously run queries in hive.
Essentially I want to
- Initiate an execution and get an operation handle.
- Persist the operation handle elsewhere.
- De-serialize the handle, poll for status and results.
Lets say there is a process P1 which initiates a query asynchronously. Ideally if the operation handle is shared, any other process should be able to poll for status and results. This *does not not happen if I use the binary thrift protocol (tcp)*. As soon as the process which initiated the asynchronous request disconnects, the operation handle in hive server seem to get cleaned up. (deleteContext gets called which in turn closes the session)
@Override
public void deleteContext(ServerContext serverContext,
TProtocol input, TProtocol output) {
Metrics metrics = MetricsFactory.getInstance();
if (metrics != null) {
try {
metrics.decrementCounter(MetricsConstant.OPEN_CONNECTIONS);
} catch (Exception e) {
LOG.warn("Error Reporting JDO operation to Metrics system", e);
}
}
ThriftCLIServerContext context = (ThriftCLIServerContext) serverContext;
SessionHandle sessionHandle = context.getSessionHandle();
if (sessionHandle != null) {
LOG.info("Session disconnected without closing properly, close it now");
try {
cliService.closeSession(sessionHandle);
} catch (HiveSQLException e) {
LOG.warn("Failed to close session: " + e, e);
}
}
}
But if I use the HTTP thrift transport mode, this does not happen and I am able to accomplish my use-case successfully.
Ideally shouldn't the working and functionality be irrespective of the underlying transport mode (?)
> Asynchronous execution in HiveServer2 to run a query in non-blocking mode
> -------------------------------------------------------------------------
>
> Key: HIVE-4617
> URL: https://issues.apache.org/jira/browse/HIVE-4617
> Project: Hive
> Issue Type: Improvement
> Components: HiveServer2
> Affects Versions: 0.12.0
> Reporter: Jaideep Dhok
> Assignee: Vaibhav Gumashta
> Fix For: 0.12.0
>
> Attachments: HIVE-4617.D12417.1.patch, HIVE-4617.D12417.2.patch, HIVE-4617.D12417.3.patch, HIVE-4617.D12417.4.patch, HIVE-4617.D12417.5.patch, HIVE-4617.D12417.6.patch, HIVE-4617.D12507.1.patch, HIVE-4617.D12507.2.patch, HIVE-4617.D12507.3.patch, HIVE-4617.D12507.4.patch, HIVE-4617.D12507.5.patch, HIVE-4617.D12507.6.patch, HIVE-4617.D12507Test.1.patch, HIVE-4617.D12783.1.patch
>
>
> Provide a way to run a queries asynchronously. Current executeStatement call blocks until the query run is complete.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)