我的Hive客户端停止使用Cosmos实例

时间:2015-08-21 07:08:13

标签: hive fiware fiware-cosmos

我有一个Hive客户端(用Java编写),可以在FIWARE实验室使用全球宇宙实例。但是,它不再起作用了,似乎客户端无法连接(它超时)。

服务器端有什么变化吗?

1 个答案:

答案 0 :(得分:4)

这是因为FIWARE实验室的全球宇宙实例已升级,现在HiveServer2正在Hive的服务器端运行。因此,代码中的所有内容仍然有效,除了以下内容:

  • 加载org.apache.hive.jdbc.HiveDriver而不是org.apache.hadoop.hive.jdbc.HiveDriver
  • 将JDBC连接架构从jdbc:hive更改为jdbc:hive2
  • 将您的Hive依赖项更改为0.13.0版本。

我的意思是,代码应该最终具有以下方面:

try {
    // dynamically load the Hive JDBC driver
    Class.forName("org.apache.hive.jdbc.HiveDriver");
} catch (ClassNotFoundException e) {
    System.out.println(e.getMessage());
    return null;
} // try catch

try {
    // return a connection based on the Hive JDBC driver
    return DriverManager.getConnection("jdbc:hive2://" + hiveServer + ":" + hivePort,
            hadoopUser, hadoopPassword);
} catch (SQLException e) {
    System.out.println(e.getMessage());
    return null;
} // try catch

关于依赖关系,如果使用例如Maven,您的pom.xml应包含以下内容:

...
<dependencies>
  ...
  <dependency>
    <groupId>org.apache.hive</groupId>
    <artifactId>hive-exec</artifactId>
    <version>0.13.0</version>
  </dependency>
  <dependency>
    <groupId>org.apache.hive</groupId>
    <artifactId>hive-jdbc</artifactId>
    <version>0.13.0</version>
  </dependency>
  ...
</dependencies>
...

最后,如果使用类似JSON的格式,则需要添加JSON serde。从Hive CLI开始,这非常简单:

hive> add JAR /usr/local/apache-hive-0.13.0-bin/lib/json-serde-1.3.1-SNAPSHOT-jar-with-dependencies.jar;

从您的Hive客户端,只需使用上述命令执行更新语句。