29-36-Hbase-Api-DML

6 篇文章 0 订阅

29-Hbase-Api-DML:

像表中插入数据
在这里插入图片描述

     public static void main(String[] args) throws IOException {
        //像表中插入数据
        putData("stu","1001","info2","name","插入数据01");
       	//获取数据
        getData("stu","1002","info2","");
        close();

    }
  /**
     * 像表中插入数据
     * @param tableName 表
     * @param rowKey 行
     * @param columnFamily 列族
     * @param column 列
     * @param value 值
     */
    public static void putData(String tableName,String rowKey,String columnFamily,String column,String value) throws IOException {
        //获取表对象
        Table table = connection.getTable(TableName.valueOf(tableName));
        //创建put对象
        Put put = new Put(Bytes.toBytes(rowKey));
        //给put赋值
        put.addColumn(Bytes.toBytes(columnFamily), Bytes.toBytes(column), Bytes.toBytes(value));
        //插入数据
        table.put(put);
        table.close();
    }

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-J1DMYTon-1669555814131)(png/1619232454753.png)]

获取数据
      public static void main(String[] args) throws IOException {
        //获取数据
        getData("stu","1002","","");
        close();

    }
   //获取数据
    public static void getData(String tableName,String rowKey,String columnsFamily,String column) throws IOException {
        //获取表对象
        Table table = connection.getTable(TableName.valueOf(tableName));

        //获取get对象
        Get get = new Get(Bytes.toBytes(rowKey));
        //指定获取的列族
//        get.addFamily(Bytes.toBytes(columnsFamily));
        //指定列族和列
//        get.addColumn(Bytes.toBytes(columnsFamily),Bytes.toBytes(column));
        //设置获取数据的版本数
        get.setMaxVersions();
        //获取数据
        Result result = table.get(get);

        //解析result打印
        Cell[] cells = result.rawCells();
        for (Cell cell : cells) {
            //打印数据
            System.out.println("cFamily:"+Bytes.toString(CellUtil.cloneFamily(cell)));
            System.out.println("cQualifier:"+Bytes.toString(CellUtil.cloneQualifier(cell)));
            System.out.println("cValue:"+Bytes.toString(CellUtil.cloneValue(cell)));
            System.out.println("cTimeStamp:"+cell.getTimestamp());
            System.out.println("====================================================");
        }
        //关闭表连接
        table.close();
    }

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RwSRxKLR-1669555814132)(png/1619233609649.png)]

获取数据SCAN

    public static void main(String[] args) throws IOException {
        //scan获取数据
        sacnTabel("stu");
        close();

    }
    //获取数据scan
    public static void sacnTabel(String tableName) throws IOException {
        //获取表对象
        Table table = connection.getTable(TableName.valueOf(tableName));

        //创建Scan
        Scan scan = new Scan();
        //Scan scan = new Scan(Bytes.toBytes("1001"),Bytes.toBytes("1003"));

        //扫描表
        ResultScanner resultScanner = table.getScanner(scan);

        //解析resultScanner
        for (Result result : resultScanner) {
            //解析result并打印
            for (Cell cell : result.rawCells()) {
                //打印数据
                //打印数据
                System.out.println("RowKey:"+Bytes.toString(CellUtil.cloneRow(cell))+
                        ",  cFamily:"+Bytes.toString(CellUtil.cloneFamily(cell))+
                        ", cQualifier"+Bytes.toString(CellUtil.cloneQualifier(cell))+
                        ",  cValue:"+Bytes.toString(CellUtil.cloneValue(cell))+
                        ",  cTimeStamp:"+cell.getTimestamp());
                System.out.println("====================================================");
            }
        }
        //关闭表连接
        table.close();
    }

删除数据

hbase(main):012:0> delete 'stu','1002','info2'
0 row(s) in 0.1210 seconds

hbase(main):015:0> deleteall 'stu','1002'
0 row(s) in 0.0220 seconds

hbase(main):017:0> scan 'stu',{RAW=>TRUE,VERSIONS=>5}
ROW                   COLUMN+CELL
 1001                 column=info2:name, timestamp=1619232415727, value=\xE6\x8F
                      \x92\xE5\x85\xA5\xE6\x95\xB0\xE6\x8D\xAE01

#####  1002                 column=info1:, timestamp=1619266435037, type=DeleteFamily

 1002                 column=info1:ddr, timestamp=1619233375653, value=xianzhong
                      lou
 1002                 column=info1:name, timestamp=1619233438453, value=name01
 1002                 column=info1:phone, timestamp=1619233467798, value=1520000
                      8888
 1002                 column=info2:, timestamp=1619266435037, type=DeleteFamily

#####  1002                 column=info2:, timestamp=1619266365328, type=DeleteColumn

 1005                 column=info1:name, timestamp=1618239079257, value=lisi
 1005                 column=info1:name, timestamp=1618239054974, value=zhangsan
3 row(s) in 0.2820 seconds

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GgJXTn89-1669555814132)(png/1619266658479.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DWL49chT-1669555814132)(png/1619268171071.png)]

    public static void main(String[] args) throws IOException {
        deleteData("stu","1008","info1","name");
        //deleteData("stu","10001","info1","");//删除列族
        close();
    }
   //删除数据
    public static void deleteData(String tableName,String rowkey,String columnsFamily,String columns) throws IOException {

        //获取table对象
        Table table = connection.getTable(TableName.valueOf(tableName));

        //构建删除delete对象
        Delete delete = new Delete(Bytes.toBytes(rowkey));

        //设置删除的列
        delete.addColumns(Bytes.toBytes(columnsFamily),Bytes.toBytes(columns));//时间戳删除指定的
        //delete.addColumn(Bytes.toBytes(columnsFamily),Bytes.toBytes(columns));//甚用,删除最大版本,旧版本复活。对客户端显示上一个版本
        
        //删除指定的列族
        delete.addFamily(Bytes.toBytes(columnsFamily));
        
        //执行删除操作
        table.delete(delete);

        //关闭连接
        table.close();
    }

注释:如果加入时间戳,时间戳比表中最大的数据的时间戳还大,不会删除表中的数据。只删除对应的时间戳的那一条数据

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SZBYQ2OG-1669555814134)(png/1619269120104.png)]

delete删除全部列族截图

//删除指定的列族delete.addFamily(Bytes.toBytes(columnsFamily));
deleteData("stu","10001","info1","");

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dJ0C2Xgo-1669555814134)(png/1619269533794.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vUNQcl5o-1669555814135)(png/1619269573880.png)]

删除扩展

delete其实时put。put一条数据标记。(自己源码查看)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值