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

时间:2014-09-26 08:26:38

标签: java api hadoop jdbc hive

嘿伙计我正在使用hive jdbc,但之后我才知道有hive metastore java api(here),您可以通过它再次连接到hive并操作配置单元数据库

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

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

2 个答案:

答案 0 :(得分:7)

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

  1. 使用hive Metastore服务器,然后在后台连接到关系数据库,例如mysql,用于模式表现。这通常在端口9083上运行。
  2. hive jdbc服务器,名为HiveServer2,在端口10001上运行,通常......
  3. 现在,在早期版本的hive中,hiveserver2过去并不那么稳定,事实上它的多线程支持也是有限的。在我看来,这个领域的情况可能已经有所改善。

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

    对于Metastore连接,似乎有2个功能。

    1. 实际运行SQL查询 - DML
    2. 执行DDL操作。
    3. 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)

hive中的

metastore,如名称所示,是hive db的元数据存储。 这个商店通常是一个RDBMS。 Metastore api支持与RDBMS交互以修改/调整元数据,而不是实际的hive db / data。对于正常使用,您可能永远不会/不得不使用这些。我认为这些适用于创建工具集的人与Metastore一起工作,而不是正常的日常使用。