package com.atguigu.test; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.*; import org.apache.hadoop.hbase.client.*; import org.apache.hadoop.hbase.util.Bytes; import java.io.IOException; public class TestAPI { private static Admin admin = null; private static Connection conn = null; static { //获取配置hbase文件信息 // HBaseConfiguration conf = new HBaseConfiguration(); Configuration conf = HBaseConfiguration.create(); conf.set("hbase.zookeeper.quorum", "hadoop01,hadoop02,hadoop03"); //获取管理员对象 // HBaseAdmin admin = new HBaseAdmin(conf); try { conn = ConnectionFactory.createConnection(conf); admin = conn.getAdmin(); } catch (IOException e) { e.printStackTrace(); } } //关流 public static void close() throws IOException { if (admin != null) { admin.close(); } if (conn != null) { conn.close(); } } //判断表是否存在 public static boolean tableExists(String tableName) throws IOException { boolean result = admin.tableExists(TableName.valueOf(tableName)); return result; } //创建表 public static void createTable(String tableName, String... cfs) throws IOException { //判断列族是否存在 if (cfs.length <= 0) { System.out.println("请设置列族信息"); return; } //判断表是否存在 if (tableExists(tableName)) { System.out.println(tableName + " 表已存在"); return; } //创建表描述器 HTableDescriptor hTableDescriptor = new HTableDescriptor(TableName.valueOf(tableName)); //循环添加列族信息 for (String cf : cfs) { //创建列族描述器 HColumnDescriptor hColumnDescriptor = new HColumnDescriptor(cf); //指定版本数 // hColumnDescriptor.setMaxVersions(1); //添加列族 hTableDescriptor.addFamily(hColumnDescriptor); } //创建表 admin.createTable(hTableDescriptor); } //删除表 public static void deleteTable(String tableName) throws IOException { //判断表是否存在 if (!tableExists(tableName)) { System.out.println(tableName + " 表不存在"); } //disable表 admin.disableTable(TableName.valueOf(tableName)); //drop表 admin.deleteTable(TableName.valueOf(tableName)); } //复制快照 public static void cloneTable(String tableName) throws IOException { //判断表是否存在 if (!tableExists(tableName)) { System.out.println(tableName + " 表不存在"); } //disable表 admin.disableTable(TableName.valueOf(tableName)); //创建快照 String newTable = null; String snapshot = null; admin.snapshot(snapshot, TableName.valueOf(tableName)); // admin.cloneSnapshot(snapshot, TableName.valueOf(newTable)); } //创建命名空间 public static void createNamespace(String ns) { NamespaceDescriptor namespaceDescriptor = NamespaceDescriptor.create(ns).build(); try { admin.createNamespace(namespaceDescriptor); } catch (NamespaceExistException e) { System.out.println(ns + " 命名空间存在"); } catch (IOException e) { e.printStackTrace(); } } //删除命名空间 public static void deleteNamespace(String ns) { try { admin.deleteNamespace(ns); } catch (NamespaceNotFoundException e) { System.out.println(ns + " 命名空间不存在"); } catch (IOException e) { e.printStackTrace(); } } //插入数据 public static void putData(String tableName, String rowKey, String cf, String cn, String value) throws IOException { //获取表对象 Table table = conn.getTable(TableName.valueOf(tableName)); //创建put对象 Put put = new Put(Bytes.toBytes(rowKey)); //给put对象赋值 put.addColumn(Bytes.toBytes(cf), Bytes.toBytes(cn), Bytes.toBytes(value)); //插入数据 table.put(put); //关闭表连接 table.close(); } //获取数据 public static void getData(String tableName, String rowKey, String cf, String cn) throws IOException { //获取表对象 Table table = conn.getTable(TableName.valueOf(tableName)); //创建get对象 Get get = new Get(Bytes.toBytes(rowKey)); //指定列族 // get.addFamily(Bytes.toBytes(cf)); //指定列 get.addColumn(Bytes.toBytes(cf), Bytes.toBytes(cn)); //设置最大版本数 get.setMaxVersions(3); //获取数据 Result result = table.get(get); //解析result并打印 for (Cell cell : result.rawCells()) { System.out.println("cf:" + Bytes.toString(CellUtil.cloneFamily(cell)) + ",cn:" + Bytes.toString(CellUtil.cloneQualifier(cell)) + ",value:" + Bytes.toString(CellUtil.cloneValue(cell))); } //关闭表连接 table.close(); } public static void scanData(String tableName) throws IOException { //获取表对象 Table table = conn.getTable(TableName.valueOf(tableName)); //构建scan对象 Scan scan = new Scan(Bytes.toBytes("1"), Bytes.toBytes("luoy")); //扫描表 ResultScanner resultScanner = table.getScanner(scan); //解析resultScanner并打印 for (Result result : resultScanner) { for (Cell cell : result.rawCells()) { System.out.println("cf:" + Bytes.toString(CellUtil.cloneFamily(cell)) + ",cn:" + Bytes.toString(CellUtil.cloneQualifier(cell)) + ",value:" + Bytes.toString(CellUtil.cloneValue(cell))); } } //关闭表连接 table.close(); } //删除数据 public static void deleteData(String tableName,String rowKey,String cf,String cn) throws IOException { //获取表对象 Table table = conn.getTable(TableName.valueOf(tableName)); //构建delete对象 Delete delete = new Delete(Bytes.toBytes(rowKey)); //删除指定列 delete.addColumns(Bytes.toBytes(cf),Bytes.toBytes(cn),1633353779970l); //删除指定列族(命令行做不到) // delete.addFamily(Bytes.toBytes(cf)); //删除数据 table.delete(delete); //关闭表连接 table.close(); } public static void main(String[] args) throws IOException { deleteData("user","1","cf1","name"); //关闭连接 close(); } }