hive jdbc客户端和hive metastore java api有什么区别

sac*_*ing 7 java api hadoop hive jdbc

嘿家伙我正在使用hive jdbc,但之后我才知道有hive metastore java api(这里)你可以通过它再次连接到hive和操作hive数据库

但我想知道这两种方式之间究竟有什么区别

很抱歉,如果被问到任何明显的信息,我们将非常感谢您提

use*_*330 7

据我所知,有两种方法可以连接到Hive

  1. 使用hive Metoreore服务器,然后在后台连接到关系数据库,例如mysql,用于模式表现.这通常在端口9083上运行.
  2. hive jdbc服务器,名为HiveServer2,运行在端口10001上,通常......

现在,在早期版本的hive中,hiveserver2曾经不是那么稳定,实际上它的多线程支持也是有限的.我想,事情可能会在那个舞台上得到改善.

所以对于JDBC api - 是的,它会让你使用JDBC和sql进行通信.

对于Metastore连接,似乎有2个特征.

  1. 实际运行SQL查询 - DML
  2. 执行DDL操作.

DDL -

对于DDL,Metastore API派上用场,org.apache.hadoop.hive.metastore.HiveMetaStoreClient HiveMetaStoreClient类可以用于此目的

DML -

我在这方面发现有用的是org.apache.hadoop.hive.ql.Driver https://hive.apache.org/javadocs/r0.13.1/api/ql/org/apache/hadoop/hive/ql /Driver.html hive.ql.Driver类此类有一个名为的方法run(),允许您执行SQL语句并返回结果.例如,你可以做以下

Driver driver = new Driver(hiveConf);
HiveMetaStoreClient client = new HiveMetaStoreClient(hiveConf);
SessionState.start(new CliSessionState(hiveConf));
driver.run("select  * from employee);
// DDL example
client.dropTable(db, table);
Run Code Online (Sandbox Code Playgroud)