我之前使用了Hive JDBC,但后来我知道了还有Hive Metastore Java API(在这里),通过它可以重新连接到Hive并操纵Hive数据库。
但是我想知道这两种方式的具体区别。
如果问了一些显而易见的问题,请谅解,非常感谢提供任何信息。
但是我想知道这两种方式的具体区别。
如果问了一些显而易见的问题,请谅解,非常感谢提供任何信息。
早期版本的Hive中,HiveServer2不太稳定,事实上其多线程支持也有限。我想在这方面情况已经改善了。
因此,对于JDBC API-是的,它允许您使用JDBC和SQL进行通信。
对于元数据存储器连接性,似乎有两个特点。
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);
如其名称所示,Hive 中的 Metastore 是用于存储 Hive 数据库元数据的存储库。通常情况下,该存储库是一个关系型数据库管理系统(RDBMS)。Metastore API 支持与 RDBMS 交互来调整元数据,而不是实际的 Hive 数据库/数据。对于普通用户而言,您可能永远不需要使用它们。我认为这些工具是为那些正在创建用于处理 Metastore 的工具集的人而设计的,而不是日常使用。