I have a Hive client (written in Java) that worked just fine with the Global Instance of Cosmos at FIWARE Lab. However, it is not working anymore, it seems the client cannot connect (it times out).
Has anything changed on the server-side?
This is because the Global Instance of Cosmos at FIWARE Lab has been upgraded and now HiveServer2 is being run on the server side of Hive. Thus, everything in your code is still valid except for the following:
org.apache.hive.jdbc.HiveDriver
instead of org.apache.hadoop.hive.jdbc.HiveDriver
.jdbc:hive
to jdbc:hive2
I mean, the code should finally have the following aspect:
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
Regarding the dependencies, if using for instance Maven, your pom.xml
should contain something like:
...
<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>
...
Finally, if using a JSON-like format, you will need to add the JSON serde. From the Hive CLI this is pretty simple:
hive> add JAR /usr/local/apache-hive-0.13.0-bin/lib/json-serde-1.3.1-SNAPSHOT-jar-with-dependencies.jar;
From you Hive client, just execute an update sentence with the above command.