Мой клиент Hive перестал работать с экземпляром Cosmos

У меня есть клиент Hive (написанный на Java), который отлично работает с Global Instance of Cosmos в FIWARE Lab. Однако он больше не работает, кажется, что клиент не может подключиться (время ожидания истекло).

Что-то изменилось на стороне сервера?


person kzangeli    schedule 21.08.2015    source источник


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

person frb    schedule 21.08.2015