Hbase APi
1、引入依赖
<dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase-server</artifactId> <version>2.4.11</version> </dependency> <dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase-client</artifactId> <version>2.4.11</version> </dependency>
2、编写方法测试
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; /** * Connection:通过ConnectionFactory 获取,是重量级实现,获取一次即可 * Table:DML 操作 * Admin:DDL 操作 */ public class HbaseDemo { private static Connection connection; static { Configuration conf = HBaseConfiguration.create(); conf.set("hbase.zookeeper.quorum", "hadoop201,hadoop202,hadoop203"); try { connection = ConnectionFactory.createConnection(conf); } catch (IOException e) { e.printStackTrace(); } } public static void main(String[] args) throws IOException { // createTable("", "stu1", "info", "info1"); //createNameSpace(""); //deleteTable("", "stu1"); // putDate("", "stu", "1002", "info", "name", "yilin"); deleteDate("", "stu", "1002", "", ""); } /** * get 数据 * @param nameSpace * @param tableName * @param rorkey * @param cf * @param c1 * @throws IOException */ public static void getDate(String nameSpace, String tableName, String rorkey, String cf, String c1) throws IOException { //表若存在,直接退出 if (!existsTable(nameSpace, tableName)) { System.err.println("表不存在"); return; } Table table = connection.getTable(TableName.valueOf(nameSpace, tableName)); Get get = new Get(Bytes.toBytes(rorkey)); get.addFamily(Bytes.toBytes(cf)); Result result = table.get(get); Cell[] cells = result.rawCells(); for (Cell cell : cells) { String s = Bytes.toString(CellUtil.cloneRow(cell)) + " : " + Bytes.toString(CellUtil.cloneFamily(cell)) + " : " + Bytes.toString(CellUtil.cloneQualifier(cell)) + " : " + Bytes.toString(CellUtil.cloneValue(cell)); System.out.println(s); } table.close(); } /** * 新增/修改 * * @param nameSpace * @param tableName * @param rorkey * @param cf * @param c1 * @param value * @throws IOException */ public static void putDate(String nameSpace, String tableName, String rorkey, String cf, String c1, String value) throws IOException { //表若存在,直接退出 if (!existsTable(nameSpace, tableName)) { System.err.println("表不存在"); return; } Table table = connection.getTable(TableName.valueOf(nameSpace, tableName)); Put put = new Put(Bytes.toBytes(rorkey)); put.addColumn(Bytes.toBytes(cf), Bytes.toBytes(c1), Bytes.toBytes(value)); table.put(put); table.close(); } /** * 删除数据 * * @param nameSpace * @param tableName * @param rorkey * @param cf * @param cl * @throws IOException */ public static void deleteDate(String nameSpace, String tableName, String rorkey, String cf, String cl) throws IOException { //表若存在,直接退出 if (!existsTable(nameSpace, tableName)) { System.err.println("表不存在"); return; } Table table = connection.getTable(TableName.valueOf(nameSpace, tableName)); Delete delete = new Delete(Bytes.toBytes(rorkey)); table.delete(delete); table.close(); } /** * 判断表是否存在 * * @param nameSpace * @param tableName * @return * @throws IOException */ public static Boolean existsTable(String nameSpace, String tableName) throws IOException { //获取 admin 对象 Admin admin = connection.getAdmin(); //判断表是否存在 return admin.tableExists(TableName.valueOf(nameSpace, tableName)); } /** * 创建表 * * @param nameSpace * @param tableName * @param cfx * @throws IOException */ public static void createTable(String nameSpace, String tableName, String... cfx) throws IOException { //表若存在,直接退出 if (existsTable(nameSpace, tableName)) { System.err.println("表已经存在"); return; } //获取 admin 对象 Admin admin = connection.getAdmin(); TableDescriptorBuilder tableDescriptorBuilder = TableDescriptorBuilder.newBuilder(TableName.valueOf(nameSpace, tableName)); if (cfx.length < 1 || cfx == null) { System.err.println("列族不能为空"); return; } for (String cf : cfx) { //处理列族数据 ColumnFamilyDescriptor build = ColumnFamilyDescriptorBuilder.newBuilder(Bytes.toBytes(cf)).build(); tableDescriptorBuilder.setColumnFamily(build); } TableDescriptor build = tableDescriptorBuilder.build(); //执行创建表操作 admin.createTable(build); //关闭资源 admin.close(); } /** * 创建 nameSpace * * @param namepace * @throws IOException */ public static void createNameSpace(String namepace) throws IOException { //如果 namepace 为空直接瑞出 if (namepace == null || namepace.length() == 0) { System.err.println("namepace 不能为空"); return; } //获取 admin 对象 Admin admin = connection.getAdmin(); NamespaceDescriptor build = NamespaceDescriptor.create(namepace).build(); //调用方法创建库 try { admin.createNamespace(build); } catch (NamespaceExistException e) { System.err.println(namepace + "已经存在了"); } //关闭资源 admin.close(); } /** * 表删除 * * @param nameSpace * @param tableName * @throws IOException */ public static void deleteTable(String nameSpace, String tableName) throws IOException { if (!existsTable(nameSpace, tableName)) { System.err.println("表不存在..."); return; } Admin admin = connection.getAdmin(); //拼接 库&表 TableName tableName1 = TableName.valueOf(nameSpace, tableName); admin.disableTable(tableName1); admin.deleteTable(tableName1); admin.deleteTable(TableName.valueOf(nameSpace, tableName)); admin.close(); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报