Spring Boot 2.4.3 集成 HBase 2.3.4 + Phoenix 5.1
版权声明:本文为作者原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/gjycn/p/14443470.html
软件依赖版本:
- springboot 2.4.3
- HBase 2.3.4
- Phoenix 5.1
准备工作
-
idea构建springboot项目
-
导入pom依赖,注意以下两个依赖的顺序不能调换,由于Phoenix版本较新,须在Hbase-client后面
<dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase-client</artifactId> <version>2.3.4</version> <exclusions> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.apache.phoenix</groupId> <artifactId>phoenix-core</artifactId> <version>5.1.0</version> <exclusions> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> </exclusion> </exclusions> </dependency>
-
复制 Hadoop 安装时的
core-site.xml
和 HBase 安装时的hbase-site.xml
两个配置文件,放入resources
目录下
导入Maven中央仓库没有的兼容层源代码
由于Phoenix版本较新,部分jar包在maven中央仓库不存在,故须直接引入源码。
该包为:phoenix-hbase-compat-2.3.0
下载 Phoenix5.1源码包 ,解压缩,复制 phoenix-5.1.0-src\phoenix-5.1.0\phoenix-hbase-compat-2.3.0\src\main\java\org\
包下全部内容,放在springboot项目的 java
包下,使包路径与解压的包路径一致,为 org\apache\phoenix\compat\hbase
测试
-
在Sqlline.py运行以下 Phoenix F.A.Q. 示例代码,创建测试表。
create table test (mykey integer not null primary key, mycolumn varchar); upsert into test values (1,'Hello'); upsert into test values (2,'World!'); select * from test;
-
在 Spring boot 测试类添加以下函数进行测试(JDBC连接地址需替换为自己的 zookeeper 地址,主机名(或IP):端口号)
@Test void fun() throws SQLException { java.sql.Connection connection = null; try { Class.forName(PhoenixDriver.class.getName()); connection = DriverManager.getConnection("jdbc:phoenix:[zookeeper]"); String sql = "select * from TEST"; PreparedStatement preparedStatement = connection.prepareStatement(sql); ResultSet resultSet = preparedStatement.executeQuery(); System.out.println("结果为"); while (resultSet.next()) { System.out.println(resultSet.getString("mycolumn")); } } catch (ClassNotFoundException e) { throw new RuntimeException("加载Phoenix驱动失败!"); } catch (SQLException e) { e.printStackTrace(); throw new RuntimeException("获取Phoenix JDBC连接失败!"); } finally { if (connection != null) { connection.close(); } } }
-
测试结果为控制台输出以下内容
结果为 Hello World!