You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@drill.apache.org by "Paul Rogers (Jira)" <ji...@apache.org> on 2020/02/25 21:50:00 UTC

[jira] [Created] (DRILL-7606) Support Hive client and JDBC APIs

Paul Rogers created DRILL-7606:
----------------------------------

             Summary: Support Hive client and JDBC APIs
                 Key: DRILL-7606
                 URL: https://issues.apache.org/jira/browse/DRILL-7606
             Project: Apache Drill
          Issue Type: Improvement
    Affects Versions: 1.17.0
            Reporter: Paul Rogers


Both Hive and Impala implement the server-side protocol for the [Hive client API|https://cwiki.apache.org/confluence/display/Hive/HiveServer2+Clients#HiveServer2Clients-JDBC]. Some internals documentation is [here|https://cwiki.apache.org/confluence/display/Hive/HiveServer2+Overview]. [Thrift message definition|https://github.com/apache/hive/blob/master/service-rpc/if/TCLIService.thrift]. Using the Hive client has a number of advantages:

* Maintained by the Hive and Impala projects, so we benefit from shared investment.
* Does not depend on Drill's internals (such as Netty, value vectors, direct memory allocation, etc.)
* Already supported by many tools.
* Comes with the "Beeline" command line tool (like SqlLine.)
* The API is versioned, allowing easier client upgrades than Drill's unversioned network API.
* Returns data in a row-oriented format better suited to JDBC clients than Drill's (potentially large, direct-memory based) value vectors.
* Passes session options along with each query to allow the server to be stateless and to allow round-robin distribution of requests to servers.

The Hive API may not be a perfect fit: Hive assumes the existence of a metastore such as HMS. Still, this may be a better option than trying to improve the existing API.

A pilot approach would be to implement a Thrift server (perhaps borrowing Hive code) that turns around and uses the Drill client API to talk to the Drill server. If this "shim" server proves the concept, the code can move into the Drillbit itself.





--
This message was sent by Atlassian Jira
(v8.3.4#803005)