【问题标题】:What is the difference between the hive jdbc client and the hive metastore java api?hive jdbc客户端和hive metastore java api有什么区别?
【发布时间】:2014-11-21 05:00:30
【问题描述】:

我使用的是 hive jdbc,但之后我才知道有 hive metastore java api (here),您可以通过它再次连接到 hive 并操作 hive 数据库。

但我想知道这两种方式之间到底有什么区别。

很抱歉,如果询问任何明显的问题,但任何信息都将受到高度赞赏。

【问题讨论】:

  • 即使我也想了解其中的区别。

标签: java api hadoop jdbc hive


【解决方案1】:

顾名思义,hive 中的元存储是 hive db 元数据的存储。 这个存储通常是一个 RDBMS。 Metastore api 支持与 RDBMS 交互以修补/调整元数据,而不是实际的 hive db/data。对于正常使用,您可能永远不想/不得不使用这些。我认为这些是为致力于创建工具集的人设计的使用 Metastore,而不是日常使用。

【讨论】:

    【解决方案2】:

    据我了解,有两种方式可以连接到 Hive

    1. 使用 hive Metastore 服务器,然后在后台连接到关系数据库(例如 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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-29
      • 1970-01-01
      • 1970-01-01
      • 2015-03-05
      • 2012-05-04
      • 2021-04-30
      • 1970-01-01
      相关资源
      最近更新 更多