hbase中api对表的DML操作

1.定义全局变量

    private Table table=null;
    private  final TableName tableName= 
                         TableName.valueOf("jxlg:test1");
    private  final Logger logger = 
                       Logger.getLogger(TableDemoDML.class);

2.初始化table对象

@Before
    public  void init(){
        //获取table对象
        table= HbaseUtil.getTable();
    }

HbaseUtil工具类

3.插入数据

@Test
    public  void putData(){
         //使用集合传入put对象
        ArrayList<Put> puts=new ArrayList<>();
        for(int i=2;i<40;i++){
            //使用put对象传入keyrow、列簇、column、值
            Put put=new Put(Bytes.toBytes("rk0000"+i));
                            put.addColumn(Bytes.toBytes("info1"),
                            Bytes.toBytes("name"),
                            Bytes.toBytes("uzi"+i));
             //使用put对象传入另一个列簇、column、值               
            put.addColumn(Bytes.toBytes("info1"),
            Bytes.toBytes("age"),
            Bytes.toBytes(""+new Random().nextInt(21)));
            //使用put对象传入另一个列簇、column、值        
            put.addColumn(Bytes.toBytes("info1"),
            Bytes.toBytes("sex"),
            Bytes.toBytes("man"));
           //把put添加到ArrayList中
            puts.add(put);
        }

        try {
           //此处可以插入一个put对象,也可以插入一个put集合
            table.put(puts);
        } catch (IOException e) {
            logger.error("获取客户操作失败");
        }
    }

4.获取数据

 @Test
    public  void getData(){
        //定义一个get对象拿到rowkey信息
        Get get=new Get(Bytes.toBytes("rk00001"));
        try {
          //获取结果集
           Result result = table.get(get);
           //打印rowkey
            System.out.println("rowkey:"+new String(result.getRow()));
          // NavigableMap<byte[],byte[]> info = result.getFamilyMap(Bytes.toBytes("info1"));
          //获取CellScanner对象
            CellScanner cellScanner=result.cellScanner();
            //对CellScanner对象进行循环获取rowkey的其他值
            while(cellScanner.advance()){
                //得到cell
                Cell cell= cellScanner.current();
                //打印列簇
                System.out.print("\t"
                +new String(CellUtil.cloneFamily(cell)));
                //打印列名
                System.out.print(":"+
                new String(CellUtil.cloneQualifier(cell)));
                //打印值
                System.out.print(": "+
                new String(CellUtil.cloneValue(cell)));
            }

        } catch (IOException e) {
           logger.error("获取客户操作失败");
        }
    }

5.多行获取数据

HbaseUtil工具类

 @Test
    public  void MultiGetData(){
        ArrayList<Get> array= new ArrayList<>();

        Get get=new Get(Bytes.toBytes("rk00001"));
        Get get1=new Get(Bytes.toBytes("rk00002"));
        Get get2=new Get(Bytes.toBytes("rk00003"));
        Get get3=new Get(Bytes.toBytes("rk000034"));
        array.add(get);array.add(get1);
        array.add(get2);array.add(get3);

        try {
            Result []results = table.get(array);
            for(Result result:results){
                HbaseUtil.printRS(result);
            }
        } catch (IOException e) {
            logger.error("获取客户操作失败");
        }
    }

6.遍历全部数据

@Test
    public  void scanData(){
    //定义scan对象,指明遍历的范围
    //第一个参数是遍历的开始位置(rowkey)
    //第二个参数是遍历的结束位置(rowkey)
     Scan scan =
         new Scan(Bytes.toBytes("rk00001"), Bytes.toBytes("rk00040"));
     //scan.addFamily(Bytes.toBytes("info1"));
     //scan.addColumn(Bytes.toBytes("info1"),Bytes.toBytes("name"));

     try {
            ResultScanner results= table.getScanner(scan);
            for(Result result:results){
                HbaseUtil.printRS(result);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }


    }

7.删除数据

 @Test
    public  void deleteData(){
     //此处也可以定义一个ArrayList接收delete对象,批量删除
      Delete del=new Delete(Bytes.toBytes("rk00001"));
      //指定列簇和列名,删除特定的列
      del.addColumn(Bytes.toBytes("info2"),Bytes.toBytes("high"));
      //可添加多列删除
        try {
            table.delete(del);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

8.释放资源

@After
    public  void close(){
        HbaseUtil.closeTable(table);
        System.out.println("执行成功");
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值