一、准备工作

由于笔者的HBase版本为2.1.0而Phoenix的5.x版本都高于本版本,所以读者可以直接采用2.4.0的SDK。同时对于
Phoenix则使用如下的依赖(其中compat需要根据实际HBase的版本进行选择)。

  1. <dependencies>
  2. <dependency>
  3. <groupId>org.apache.phoenix</groupId>
  4. <artifactId>phoenix-core</artifactId>
  5. <version>5.1.0</version>
  6. </dependency>
  7. <dependency>
  8. <groupId>org.apache.phoenix</groupId>
  9. <artifactId>phoenix-hbase-compat-2.4.0</artifactId>
  10. <version>5.1.0</version>
  11. </dependency>
  12. </dependencies>

完成以上依赖后我们就可以利用JDBC进行语句执行操作,具体代码示例如下。

  1. public static Connection getConnection() {
  2. Connection con;
  3. try {
  4. Class.forName("org.apache.phoenix.jdbc.PhoenixDriver");
  5. con = DriverManager.getConnection("jdbc:phoenix:localhost:2181");
  6. return con;
  7. } catch (Exception e) {
  8. e.printStackTrace();
  9. return null;
  10. }
  11. }
  12. @Test
  13. public void query() throws SQLException {
  14. String sql = "select * from db1";
  15. Connection con = getConnection();
  16. Statement stmt = con.createStatement();
  17. // 执行查询
  18. ResultSet rs = stmt.executeQuery(sql);
  19. // 获取元数据信息
  20. ResultSetMetaData rsmd = rs.getMetaData();
  21. int columnCount = rsmd.getColumnCount();
  22. // 获取列名
  23. StringBuilder sb = new StringBuilder();
  24. for (int i = 1; i <= columnCount; i++) {
  25. String columnName = rsmd.getColumnLabel(i);
  26. sb.append(columnName + "\t");
  27. }
  28. if (sb.length() > 0) {
  29. sb.setLength(sb.length() - 1);
  30. System.out.println(sb.toString());
  31. // 查询结果
  32. while (rs.next()) {
  33. sb = new StringBuilder();
  34. for (int i = 1; i <= columnCount; i++) {
  35. sb.append(rs.getString(i) + "\t");
  36. }
  37. if (sb.length() > 0) {
  38. sb.setLength(sb.length() - 1);
  39. System.out.println(sb.toString());
  40. }
  41. }
  42. }
  43. con.close();
  44. }

如果读者期望在Spring Boot中利用Mybatis使用Phoenix来操作HBase可以参考本文档