环境问题,maven依赖问题,可查看博文
https://blog.csdn.net/qq_41712271/article/details/108933385
jdbc工具类
package com.huawei.phoenix_api.config;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class PhoenixUtil {
public static Connection getConnection(){
try {
Class.forName("org.apache.phoenix.jdbc.PhoenixDriver");
Connection connection = null;
//此处为zookeeper地址,可以为一个或多个:zookeeper的端口号:zookeeper.znode.parent(此处默认为 /hbase默认可不填写)
connection= DriverManager.getConnection("jdbc:phoenix:master,slave1,slave2:2181"); //connection=DriverManager.getConnection("jdbc:phoenix:master,slaves1,slaves2:2181:/hbase-unsecure");
return connection;
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
public static void closeConnection(Connection conn){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
演示增删改查
package com.huawei.phoenix_api.config;
import java.sql.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Phoenix_Hbase_opt {
public static void main(String[] args) {
//如果不指定列簇,默认使用列簇 0
String sql = "CREATE TABLE teacher (id varchar PRIMARY KEY,cf.name varchar ,cf.classroom varchar)";
//创建表
createTable(sql);
//批量插入数据
insertData();
//获取Phoenix中的表(系统表除外)
List<String> tables = getTables();
for (String table : tables) {
System.out.println(table);
}
//获取表中的所有数据
List<Map<String, String>> stuList = getList("teacher");
for (Map<String, String> map : stuList) {
for (Map.Entry<String, String> entry : map.entrySet()) {
System.out.println(entry.getKey() + ":" + entry.getValue());
}
}
//删除数据
String sql_delData = "delete from teacher where id='001'";
delData(sql_delData);
//删除表
String sql_delTable = "drop table TEACHER";
dropTable(sql_delTable);
}
/**
* 创建表
*/
public static void createTable(String sql) {
Connection conn = PhoenixUtil.getConnection();
try {
PreparedStatement sta = conn.prepareStatement(sql);
sta.execute();
System.out.println("创建成功...");
} catch (SQLException e) {
e.printStackTrace();
} finally {
if (conn != null) {
PhoenixUtil.closeConnection(conn);
}
}
}
/**
* 批量插入数据
*/
public static void insertData() {
Connection conn = PhoenixUtil.getConnection();
try {
Long a = System.currentTimeMillis();
Statement statement = conn.createStatement();
for (int i = 1; i <= 10000; i++) {
String sql_insert = "upsert into teacher(id, name, classroom) values('" + i + "', 'MrsZhang', '0302')";
statement.addBatch(sql_insert);
}
statement.executeBatch();
conn.commit();
Long b = System.currentTimeMillis();
System.out.println("运行时间:" + (b - a));
} catch (SQLException e) {
e.printStackTrace();
} finally {
if (conn != null) {
PhoenixUtil.closeConnection(conn);
}
}
}
/**
* 删除数据
*/
public static void delData(String sql) {
Connection conn = PhoenixUtil.getConnection();
try {
PreparedStatement ps = conn.prepareStatement(sql);
String msg = ps.executeUpdate() > 0 ? "删除成功..."
: "删除失败...";
conn.commit();
System.out.println(msg);
} catch (SQLException e) {
e.printStackTrace();
} finally {
if (conn != null) {
PhoenixUtil.closeConnection(conn);
}
}
}
/**
* 删除表
*/
public static void dropTable(String sql) {
Connection conn = PhoenixUtil.getConnection();
//String sql = "drop table user";
try {
PreparedStatement ps = conn.prepareStatement(sql);
ps.execute();
System.out.println("删除表成功...");
} catch (SQLException e) {
e.printStackTrace();
} finally {
if (conn != null) {
PhoenixUtil.closeConnection(conn);
}
}
}
/**
* 获取Phoenix中的表(系统表除外)
*/
public static List<String> getTables() {
Connection conn = PhoenixUtil.getConnection();
List<String> tables = new ArrayList<>();
try {
DatabaseMetaData metaData = conn.getMetaData();
String[] types = {"TABLE"}; //"SYSTEM TABLE"
ResultSet resultSet = metaData.getTables(null, null, null, types);
while (resultSet.next()) {
tables.add(resultSet.getString("TABLE_NAME"));
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (conn != null) {
PhoenixUtil.closeConnection(conn);
}
}
return tables;
}
/**
* 获取表中的所有数据
*/
public static List<Map<String, String>> getList(String tableName) {
String sql = "SELECT * FROM " + tableName;
Connection conn = PhoenixUtil.getConnection();
List<Map<String, String>> resultList = new ArrayList<>();
try {
PreparedStatement preparedStatement = conn.prepareStatement(sql);
ResultSet resultSet = preparedStatement.executeQuery();
ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
while (resultSet.next()) {
Map<String, String> result = new HashMap<>();
for (int i = 1, len = resultSetMetaData.getColumnCount(); i <= len; i++) {
result.put(resultSetMetaData.getColumnName(i), resultSet.getString(i));
}
resultList.add(result);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (conn != null) {
PhoenixUtil.closeConnection(conn);
}
}
return resultList;
}
}