Мой клиент 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 просто выполните предложение обновления с помощью приведенной выше команды.

Другие вопросы по тегам