My Hive client stopped working with Cosmos instance

后端 未结 1 837
小鲜肉
小鲜肉 2021-01-23 12:46

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 con

1条回答
  •  孤城傲影
    2021-01-23 12:52

    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:

    • Load org.apache.hive.jdbc.HiveDriver instead of org.apache.hadoop.hive.jdbc.HiveDriver.
    • Change the JDBC connection schema from jdbc:hive to jdbc:hive2
    • Change your Hive dependencies to 0.13.0 version.

    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:

    ...
    
      ...
      
        org.apache.hive
        hive-exec
        0.13.0
      
      
        org.apache.hive
        hive-jdbc
        0.13.0
      
      ...
    
    ...
    

    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.

    0 讨论(0)
提交回复
热议问题