在IDEA中对Hbase数据库进行代码操作

发布时间 2023-09-13 19:01:05作者: yesyes1

1、创建表

public static void createTable(String tableName,String[] rowName) throws IOException {
        if(admin.tableExists(TableName.valueOf(tableName))){//该表已经存在
            admin.disableTable(TableName.valueOf(tableName));
            admin.deleteTable(TableName.valueOf(tableName));
            System.out.println(tableName+" 已经删除!");
        }else{//表不存在
            HTableDescriptor desc=new HTableDescriptor(TableName.valueOf(tableName));
            for(String cf:rowName){
                desc.addFamily(new HColumnDescriptor(cf));
            }
            admin.createTable(desc);
        }

    }

2、删除表

public static void deleteTable(String tableName) throws IOException {
        TableName name=TableName.valueOf(tableName);

        if(admin.tableExists(name)){//表存在
            admin.disableTable(name);
            admin.deleteTable(name);

        }else{//表不存在
            System.out.println("表不存在");
        }
    }

3、增加数据/修改数据

public static void addTableData(String tableName,String rowKey,String cf,String cn,String value) throws IOException {
        Table table=connection.getTable(TableName.valueOf(tableName));
        Put put=new Put(Bytes.toBytes(rowKey));
        put.addColumn(Bytes.toBytes(cf),Bytes.toBytes(cn),Bytes.toBytes(value));

        table.put(put);
        table.close();

    }

添加:

修改:

4、删除数据

public static void deleteTableData(String tableName,String rowKey,String cf,String cn) throws IOException {
        Table table=connection.getTable(TableName.valueOf(tableName));

        Delete delete=new Delete(Bytes.toBytes(rowKey));

        delete.addColumn(Bytes.toBytes(cf),Bytes.toBytes(cn));
        table.delete(delete);
        table.close();

    }

5、查询数据

public static void scanTableData(String tableName,String startRow,String stopRow) throws IOException {
        Table table=connection.getTable(TableName.valueOf(tableName));

        Scan scan=new Scan(Bytes.toBytes(startRow),Bytes.toBytes(stopRow));

        ResultScanner resultScanner=table.getScanner(scan);

        for(Result result:resultScanner){
            showRowData(result);
        }

        table.close();
    }

public static void showRowData(Result result){
        Cell[] cells=result.rawCells();//遍历数组
        for(Cell cell:cells){
            String rk=Bytes.toString(CellUtil.cloneRow(cell));
            String cf=Bytes.toString(CellUtil.cloneFamily(cell));
            String cn=Bytes.toString(CellUtil.cloneQualifier(cell));
            String vl=Bytes.toString(CellUtil.cloneValue(cell));

            System.out.println("rowKey: "+rk+"  family: "+cf+"  qualifier: "+cn+"  value: "+vl);
        }


    }