Java – Hive2 & JDBC – Required field ‘serverProtocolVersion’ is not set

Hive2 & JDBC – Required field ‘serverProtocolVersion’ is not set… here is a solution to the problem.

Hive2 & JDBC – Required field ‘serverProtocolVersion’ is not set

I’m trying to connect to a hive using
Driver org.apache.hive.jdbc.HiveDriver

 private static String driverName = "org.apache.hive.jdbc.HiveDriver";

public void (String query)throws SQLException {
    try {
      Class.forName(driverName);
    } catch (ClassNotFoundException e) {
       TODO Auto-generated catch block
      e.printStackTrace();
      System.exit(1);
    }
    Connection con = DriverManager.getConnection("jdbc:hive2://localhost:10000/default", "", "");
    Statement stmt = con.createStatement();
    String tableName = "testHiveTable";
    stmt.executeQuery("drop table " + tableName);
    ResultSet res = stmt.executeQuery("create table " + tableName + " as "+query);

The following error occurred

java.sql.SQLException: Could not establish connection to jdbc:hive2://localhost:10000/default: Required field 'serverProtocolVersion' is unset! Struct:TOpenSessionResp(status:TStatus(statusCode:SUCCESS_STATUS), serverProtocolVersion:null, sessionHandle:TSessionHandle(sessionId:THandleIdentifier(guid:4A D8 C1 6F 82 54 49 05 80 77 24 7D A2 3A 1D 9A, secret:21 9B BF EA 37 B6 49 60 BE 5F D2 13 98 E3 17 0B)), configuration:{})

Solution

I’m having the same issue. Set the username in the method getConnection solved my problem. See HiveServer2 documentation for more details.

Related Problems and Solutions