In this tutorial I will show you how to connect to an Secure Phoenix using Java. It’s rather straight forward.
POM.xml
<dependency> <groupId>org.apache.phoenix</groupId> <artifactId>phoenix-queryserver</artifactId> <version>5.0.0-HBase-2.0</version> </dependency>
Imports:
import java.io.IOException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.ResultSet; import java.sql.Statement;
Initiate Kerberos Authentication
System.setProperty("java.security.krb5.conf", "C:\\Program Files\\Java\\jdk1.8.0_171\\jre\\lib\\security\\krb5.conf"); System.setProperty("java.security.krb5.realm", "REALM.CA"); System.setProperty("java.security.krb5.kdc", "REALM.CA"); System.setProperty("sun.security.krb5.debug", "true"); System.setProperty("javax.net.debug", "all");
Connect:
Now we create the connection.
Class.forName("org.apache.phoenix.jdbc.PhoenixDriver"); String url = "jdbc:phoenix:hadoop:2181:/hbase-secure:hbase/hadoop@REALM.CA:\\data\\hbase.service.keytab"; Connection connection = DriverManager.getConnection(url); System.out.println("Connected"); Statement statement = connection.createStatement(); //Drop table String deleteTableSql = "DROP TABLE IF EXISTS employee"; System.out.println("Deleting Table: " + deleteTableSql); statement.executeUpdate(deleteTableSql); System.out.println("Created Table"); //Create a table String createTableSql = "CREATE TABLE employee ( eid bigint primary key, name varchar)"; System.out.println("Creating Table: " + createTableSql); statement.executeUpdate(createTableSql); System.out.println("Created Table"); //Insert Data String insertTableSql = "UPSERT INTO employee VALUES(1, 'Oliver')"; System.out.println("Inserting Data: " + insertTableSql); statement.executeUpdate(insertTableSql); System.out.println("Inserted Data"); connection.commit(); //Select Data String selectTablesSql = "select * from employee"; System.out.println("Show records: " + selectTablesSql); ResultSet res = statement.executeQuery(selectTablesSql); while (res.next()) { System.out.println(String.format("id: %s name: %s", res.getInt("eid"), res.getString("name"))); }