Phoenix & Java: Connecting Secure

(Last Updated On: )

In this tutorial I will show you how to connect to an Secure Phoenix using Java. It’s rather straight forward.

POM.xml

  1. <dependency>
  2. <groupId>org.apache.phoenix</groupId>
  3. <artifactId>phoenix-queryserver</artifactId>
  4. <version>5.0.0-HBase-2.0</version>
  5. </dependency>

Imports:

  1. import java.io.IOException;
  2. import java.sql.Connection;
  3. import java.sql.DriverManager;
  4. import java.sql.SQLException;
  5. import java.sql.ResultSet;
  6. import java.sql.Statement;

Initiate Kerberos Authentication

  1. System.setProperty("java.security.krb5.conf", "C:\\Program Files\\Java\\jdk1.8.0_171\\jre\\lib\\security\\krb5.conf");
  2. System.setProperty("java.security.krb5.realm", "REALM.CA");
  3. System.setProperty("java.security.krb5.kdc", "REALM.CA");
  4. System.setProperty("sun.security.krb5.debug", "true");
  5. System.setProperty("javax.net.debug", "all");

Connect:

Now we create the connection.

  1. Class.forName("org.apache.phoenix.jdbc.PhoenixDriver");
  2. String url = "jdbc:phoenix:hadoop:2181:/hbase-secure:hbase/hadoop@REALM.CA:\\data\\hbase.service.keytab";
  3. Connection connection = DriverManager.getConnection(url);
  4.  
  5. System.out.println("Connected");
  6.  
  7. Statement statement = connection.createStatement();
  8.  
  9. //Drop table
  10. String deleteTableSql = "DROP TABLE IF EXISTS employee";
  11. System.out.println("Deleting Table: " + deleteTableSql);
  12. statement.executeUpdate(deleteTableSql);
  13. System.out.println("Created Table");
  14. //Create a table
  15. String createTableSql = "CREATE TABLE employee ( eid bigint primary key, name varchar)";
  16. System.out.println("Creating Table: " + createTableSql);
  17. statement.executeUpdate(createTableSql);
  18. System.out.println("Created Table");
  19.  
  20. //Insert Data
  21. String insertTableSql = "UPSERT INTO employee VALUES(1, 'Oliver')";
  22. System.out.println("Inserting Data: " + insertTableSql);
  23. statement.executeUpdate(insertTableSql);
  24. System.out.println("Inserted Data");
  25.  
  26. connection.commit();
  27.  
  28. //Select Data
  29. String selectTablesSql = "select * from employee";
  30. System.out.println("Show records: " + selectTablesSql);
  31. ResultSet res = statement.executeQuery(selectTablesSql);
  32. while (res.next()) {
  33. System.out.println(String.format("id: %s name: %s", res.getInt("eid"), res.getString("name")));
  34. }