← 返回首页
HBase基础教程(二十)
发表时间:2023-04-26 01:35:28
Phoenix的Java jdbc操作

Phoenix的Java jdbc操作。

1.Phoenix JDBC连接方式

两种连接方式的区别主要体现在加载的驱动和URL的写法不同:

//瘦客户端
Class.forName("org.apache.phoenix.queryserver.client.Driver");  //驱动类
String url = "jdbc:phoenix:thin:url=http://10.74.31.184:8765;serialization=PROTOBUF"; //连接地址


//胖客户端
Class.forName("org.apache.phoenix.jdbc.PhoenixDriver"); 
String url = "jdbc:phoenix:10.74.31.184:2181"; 

本节以瘦客户端为实例讲解java jdbc操作Phoenix.

实例:

1.添加依赖

   <properties>
        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <spring-boot.version>2.6.13</spring-boot.version>
        <phoenix.version>4.13.1-HBase-1.2</phoenix.version>
        <protobuf.version>3.5.1</protobuf.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <!--胖客户端驱动-->
        <!--
        <dependency>
            <groupId>org.apache.phoenix</groupId>
            <artifactId>phoenix-core</artifactId>
            <version>${phoenix.version}</version>
        </dependency>
        -->
        <dependency>
            <groupId>org.apache.phoenix</groupId>
            <artifactId>phoenix-queryserver-client</artifactId>
            <version>${phoenix.version}</version>
        </dependency>

        <dependency>
            <groupId>com.google.protobuf</groupId>
            <artifactId>protobuf-java</artifactId>
            <version>${protobuf.version}</version>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

2.编写连接测试类

package com.simoniu.hbase.phoenixjdbc.app;


import org.apache.phoenix.queryserver.client.ThinClientUtil;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Properties;

public class PhoenixApp {

  public static void main(String[] args) throws Exception {

    Class.forName("org.apache.phoenix.queryserver.client.Driver");

    String url = ThinClientUtil.getConnectionUrl("hadoop-master", 8765);
    System.out.println(url);
    Connection connection = DriverManager.getConnection(url);
    PreparedStatement statement = connection.prepareStatement("select * from STUDENTS");
    ResultSet resultSet = statement.executeQuery();

    while (resultSet.next()) {
      System.out.println(resultSet.getInt("SID")+","+resultSet.getString("SNAME")+","+resultSet.getInt("AGE")+","+resultSet.getString("GENDER"));
    }
    statement.close();
    connection.close();
  }

}

3.开启瘦客户端服务

cd /usr/local/phoenix/bin
[root@hadoop-master bin]# ./queryserver.py
...
23/04/26 16:11:55 INFO metrics.MetricsSystemLoader: No metrics implementation available on classpath. Using No-op implementation
23/04/26 16:11:55 INFO util.log: Logging initialized @721ms
23/04/26 16:11:55 INFO server.Server: jetty-9.2.z-SNAPSHOT
23/04/26 16:11:55 INFO server.ServerConnector: Started ServerConnector@4803b726{HTTP/1.1}{0.0.0.0:8765}
23/04/26 16:11:55 INFO server.Server: Started @875ms
23/04/26 16:11:55 INFO server.HttpServer: Service listening on port 8765.

运行效果:

jdbc:phoenix:thin:url=http://hadoop-master:8765;serialization=PROTOBUF

100,Tom,18,男
101,Jerry,16,女
102,Jackson,20,男
103,张三,22,男