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,男