HiveServer2 (Kerberos Authentication) JDBC Connection using JAVA
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>

