Мой клиент Hive перестал работать с экземпляром Cosmos
У меня есть клиент Hive (написанный на Java), который прекрасно работал с Global Instance of Cosmos в FIWARE Lab. Тем не менее, он больше не работает, кажется, клиент не может подключиться (время ожидания истекло).
Что-нибудь изменилось на стороне сервера?
1 ответ
Это связано с тем, что глобальный экземпляр Cosmos в FIWARE Lab был обновлен, и теперь 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 просто выполните предложение обновления с помощью приведенной выше команды.