Skip to main content
kgautam
Gold ⭐️
January 2, 2018

HiveServer2 (Kerberos Authentication) JDBC Connection using JAVA

  • October 5, 2026 at 9:14 AM
  • 0 replies
  • 12999 views
  • Translate All

package com.big.data.hiveserver2;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.security.UserGroupInformation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;


import java.io.IOException;
import java.sql.*;

public class HiveServer2Client {
private static final Logger LOGGER = LoggerFactory.getLogger(HiveServer2Client.class);
private static String HIVESERVE2DRIVER = "org.apache.hive.jdbc.HiveDriver";


public static void main(String[] args) throws SQLException, IOException {

// set the configuration
Configuration conf = new Configuration();
conf.set("hadoop.security.authentication", "Kerberos");
UserGroupInformation.setConfiguration(conf);
// /etc/security/keytab/hive.service.keytab is from local machine, This is the user which is executing the command
UserGroupInformation.loginUserFromKeytab("hive/cluster20182.field.fieldorg.com@REALM_NAME", "/etc/security/keytab/hive.service.keytab");


// load the driver
try {
Class.forName(HIVESERVE2DRIVER);
} catch (ClassNotFoundException e) {
LOGGER.error("Driver not found");
}

Connection con = DriverManager.getConnection("jdbc:hive2://cluster20181.field.fieldorg.com:2181,cluster20180.field.fieldorg.com:2181,cluster20182.field.fieldorg.com:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2;principal=hive/cluster20182.field.fieldorg.com@REALM_NAME");
Statement stmt = con.createStatement();

// Table Name
String tableName = "testHiveDriverTable";
stmt.execute("drop table " + tableName);

LOGGER.info("Table {} is dropped", tableName);
stmt.execute("create table " + tableName + " (key int, value string)");

// show tables
String sql = "show tables '" + tableName + "'";
LOGGER.info("Running {} ", sql);

ResultSet res = stmt.executeQuery(sql);
if (res.next()) {
LOGGER.info(" return from HiveServer {}", res.getString(1));
}
// describe table
sql = "describe " + tableName;
LOGGER.info("DESCRIBE newwly created table sql command : {}" + sql);
res = stmt.executeQuery(sql);
while (res.next()) {
System.out.printf("HOOOO");
LOGGER.info("Return from HiveServer {}", res.getString(1) + "\t" + res.getString(2));
}

// close the connection
con.close();
}

}



Dependency:
<dependencies>
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-jdbc</artifactId>
<version>1.2.1000.2.6.0.3-8</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
</dependency>
</dependencies>



Repo : http://repo.hortonworks.com/content/groups/public


<br>