Hive JDBC客户端和Hive Metastore Java API有什么区别?

9
我之前使用了Hive JDBC,但后来我知道了还有Hive Metastore Java API(在这里),通过它可以重新连接到Hive并操纵Hive数据库。
但是我想知道这两种方式的具体区别。
如果问了一些显而易见的问题,请谅解,非常感谢提供任何信息。

即使我也想理解它们之间的区别。 - Bector
2个回答

10
据我所知,连接到Hive有两种方式:
  1. 使用Hive元数据服务器,它在后台连接到关系型数据库(如mysql)进行模式显现。通常在端口9083上运行。
  2. Hive JDBC服务器,称为HiveServer2,通常在端口10001上运行...

早期版本的Hive中,HiveServer2不太稳定,事实上其多线程支持也有限。我想在这方面情况已经改善了。

因此,对于JDBC API-是的,它允许您使用JDBC和SQL进行通信。

对于元数据存储器连接性,似乎有两个特点。

  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);

2

如其名称所示,Hive 中的 Metastore 是用于存储 Hive 数据库元数据的存储库。通常情况下,该存储库是一个关系型数据库管理系统(RDBMS)。Metastore API 支持与 RDBMS 交互来调整元数据,而不是实际的 Hive 数据库/数据。对于普通用户而言,您可能永远不需要使用它们。我认为这些工具是为那些正在创建用于处理 Metastore 的工具集的人而设计的,而不是日常使用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接