嘿伙计我正在使用hive jdbc,但之后我才知道有hive metastore java api(here),您可以通过它再次连接到hive并操作配置单元数据库
但我想知道这两种方式之间究竟有什么区别
很抱歉,如果被问到任何明显的信息,我们将非常感谢任何信息
答案 0 :(得分:7)
据我所知,有两种方法可以连接到Hive
现在,在早期版本的hive中,hiveserver2过去并不那么稳定,事实上它的多线程支持也是有限的。在我看来,这个领域的情况可能已经有所改善。
所以对于JDBC api - 是的,它会让你使用JDBC和sql进行通信。
对于Metastore连接,似乎有2个功能。
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);
答案 1 :(得分:1)
metastore,如名称所示,是hive db的元数据存储。 这个商店通常是一个RDBMS。 Metastore api支持与RDBMS交互以修改/调整元数据,而不是实际的hive db / data。对于正常使用,您可能永远不会/不得不使用这些。我认为这些适用于创建工具集的人与Metastore一起工作,而不是正常的日常使用。