我的 Hive 客户端停止使用 Cosmos 实例
My Hive client stopped working with Cosmos instance
我有一个 Hive 客户端(用 Java 编写),它与 FIWARE 实验室的 Cosmos 全局实例配合得很好。但是,它不再工作了,客户端似乎无法连接(超时)。
服务器端有什么变化吗?
这是因为FIWARE实验室的Cosmos全局实例已经升级,现在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 客户端,用上面的命令执行一个更新语句就可以了。
我有一个 Hive 客户端(用 Java 编写),它与 FIWARE 实验室的 Cosmos 全局实例配合得很好。但是,它不再工作了,客户端似乎无法连接(超时)。
服务器端有什么变化吗?
这是因为FIWARE实验室的Cosmos全局实例已经升级,现在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 客户端,用上面的命令执行一个更新语句就可以了。