hivefiwarefiware-cosmos

My Hive client stopped working with Cosmos instance


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?


Solution

  • 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:

    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.