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")));
- }