Hbase常用api操作

 //连接数据库
        Configuration conf = new Configuration();
        conf.set("hbase.zookeeper.quorum", "node01:2181,node02:2181,node03:2181");
        Connection connection = ConnectionFactory.createConnection(conf);
        //读取表
        Table hbase_rate = connection.getTable(TableName.valueOf("hbase_rate"));
        Scan scan = new Scan();
        scan.setStartRow("7u6UaIPfLC0".getBytes());
        scan.setStopRow("1WBxfCRS2ag".getBytes());

        ResultScanner scanner = hbase_rate.getScanner(scan);
        for (Result result : scanner) {
            System.out.println(Bytes.toString(result.getRow()));
            System.out.println(Bytes.toString(result.getValue("cf".getBytes(), "age".getBytes())));
        }
        connection.close();
 //连接数据库
        Configuration conf = new Configuration();
        conf.set("hbase.zookeeper.quorum", "node01:2181,node02:2181,node03:2181");
        Connection connection = ConnectionFactory.createConnection(conf);
        //读取表
        Table hbase_comments = connection.getTable(TableName.valueOf("hbase_comments"));

        Scan scan = new Scan();
        ResultScanner scanner = hbase_comments.getScanner(scan);
        for (Result result : scanner) {
             //遍历一行内的所有的列
            Cell[] cells = result.rawCells();
            for (Cell cell : cells) {
                 if (Bytes.toString(CellUtil.cloneQualifier(cell)).equals("comments"));
                System.out.println(Bytes.toString(CellUtil.cloneFamily(cell))+":"+Bytes.toString(CellUtil.cloneQualifier(cell))+"-"+Bytes.toString(CellUtil.cloneValue(cell)));
            }
        }
         connection.close();
/ 创建hbase 数据表
    public  static   void   create() throws IOException {
        //1 连接数据库
        //2 对数据库进行操作
        //3 关闭连接


        //实例化配置文件
        Configuration conf=new Configuration();
      //指定zookeeper
        conf.set("hbase.zookeeper.quorum","node01:2181,node02:2181,node03:2181");

        Connection connection=ConnectionFactory.createConnection(conf);
        //实例adime 管理员
        Admin  admin=connection.getAdmin();
        //实例表名  表结构
        //表名
        TableName myusere=TableName.valueOf("myuser");
         //设置表的结构
        HTableDescriptor hTableDescriptor=new HTableDescriptor(myusere);
        //设置列族
        HColumnDescriptor f1 = new HColumnDescriptor("f1");
        HColumnDescriptor f2 = new HColumnDescriptor("f2");
         //建立表与列族之间的关系
        hTableDescriptor.addFamily(f1);
        hTableDescriptor.addFamily(f2);

        admin.createTable(hTableDescriptor);
        admin.close();
        //关闭连接
        connection.close();


    }
      //向表中添加数据
     public  static void  addDatas() throws IOException {
          //获取连接 找到需要添加的表
         Configuration  conf =new Configuration();
         conf.set("hbase.zookeeper.quorum","node01:2181,node02:2181,node03:2181");
         Connection connection = ConnectionFactory.createConnection(conf);
         Table myuser = connection.getTable(TableName.valueOf("myuser"));
         //示例数据
         Put  put=new Put("0001".getBytes());
         put.addColumn("f1".getBytes(),"name".getBytes(),"zhangsan".getBytes());
         put.addColumn("f1".getBytes(),"id".getBytes(),"001".getBytes());
         put.addColumn("f1".getBytes(),"age".getBytes(),"18".getBytes());

          //插入数据
         myuser.put(put);
          //关闭连接
          connection.close();

     }
    //向表中添加一批数据
    public  static void  addDatass() throws IOException {
        //获取连接 找到需要添加的表
        Configuration  conf =new Configuration();
        conf.set("hbase.zookeeper.quorum","node01:2181,node02:2181,node03:2181");
        Connection connection = ConnectionFactory.createConnection(conf);
        Table myuser = connection.getTable(TableName.valueOf("myuser"));
        //示例数据
        //创建put对象,并指定rowkey
        Put put = new Put("0002".getBytes());
        put.addColumn("f1".getBytes(),"id".getBytes(),Bytes.toBytes(1));
        put.addColumn("f1".getBytes(),"name".getBytes(),Bytes.toBytes("曹操"));
        put.addColumn("f1".getBytes(),"age".getBytes(),Bytes.toBytes(30));
        put.addColumn("f2".getBytes(),"sex".getBytes(),Bytes.toBytes("1"));
        put.addColumn("f2".getBytes(),"address".getBytes(),Bytes.toBytes("沛国谯县"));
        put.addColumn("f2".getBytes(),"phone".getBytes(),Bytes.toBytes("16888888888"));
        put.addColumn("f2".getBytes(),"say".getBytes(),Bytes.toBytes("helloworld"));

        Put put2 = new Put("0003".getBytes());
        put2.addColumn("f1".getBytes(),"id".getBytes(),Bytes.toBytes(2));
        put2.addColumn("f1".getBytes(),"name".getBytes(),Bytes.toBytes("刘备"));
        put2.addColumn("f1".getBytes(),"age".getBytes(),Bytes.toBytes(32));
        put2.addColumn("f2".getBytes(),"sex".getBytes(),Bytes.toBytes("1"));
        put2.addColumn("f2".getBytes(),"address".getBytes(),Bytes.toBytes("幽州涿郡涿县"));
        put2.addColumn("f2".getBytes(),"phone".getBytes(),Bytes.toBytes("17888888888"));
        put2.addColumn("f2".getBytes(),"say".getBytes(),Bytes.toBytes("talk is cheap , show me the code"));


        Put put3 = new Put("0004".getBytes());
        put3.addColumn("f1".getBytes(),"id".getBytes(),Bytes.toBytes(3));
        put3.addColumn("f1".getBytes(),"name".getBytes(),Bytes.toBytes("孙权"));
        put3.addColumn("f1".getBytes(),"age".getBytes(),Bytes.toBytes(35));
        put3.addColumn("f2".getBytes(),"sex".getBytes(),Bytes.toBytes("1"));
        put3.addColumn("f2".getBytes(),"address".getBytes(),Bytes.toBytes("下邳"));
        put3.addColumn("f2".getBytes(),"phone".getBytes(),Bytes.toBytes("12888888888"));
        put3.addColumn("f2".getBytes(),"say".getBytes(),Bytes.toBytes("what are you 弄啥嘞!"));

        Put put4 = new Put("0005".getBytes());
        put4.addColumn("f1".getBytes(),"id".getBytes(),Bytes.toBytes(4));
        put4.addColumn("f1".getBytes(),"name".getBytes(),Bytes.toBytes("诸葛亮"));
        put4.addColumn("f1".getBytes(),"age".getBytes(),Bytes.toBytes(28));
        put4.addColumn("f2".getBytes(),"sex".getBytes(),Bytes.toBytes("1"));
        put4.addColumn("f2".getBytes(),"address".getBytes(),Bytes.toBytes("四川隆中"));
        put4.addColumn("f2".getBytes(),"phone".getBytes(),Bytes.toBytes("14888888888"));
        put4.addColumn("f2".getBytes(),"say".getBytes(),Bytes.toBytes("出师表你背了嘛"));

        Put put5 = new Put("0005".getBytes());
        put5.addColumn("f1".getBytes(),"id".getBytes(),Bytes.toBytes(5));
        put5.addColumn("f1".getBytes(),"name".getBytes(),Bytes.toBytes("司马懿"));
        put5.addColumn("f1".getBytes(),"age".getBytes(),Bytes.toBytes(27));
        put5.addColumn("f2".getBytes(),"sex".getBytes(),Bytes.toBytes("1"));
        put5.addColumn("f2".getBytes(),"address".getBytes(),Bytes.toBytes("哪里人有待考究"));
        put5.addColumn("f2".getBytes(),"phone".getBytes(),Bytes.toBytes("15888888888"));
        put5.addColumn("f2".getBytes(),"say".getBytes(),Bytes.toBytes("跟诸葛亮死掐"));


        Put put6 = new Put("0006".getBytes());
        put6.addColumn("f1".getBytes(),"id".getBytes(),Bytes.toBytes(5));
        put6.addColumn("f1".getBytes(),"name".getBytes(),Bytes.toBytes("xiaobubu—吕布"));
        put6.addColumn("f1".getBytes(),"age".getBytes(),Bytes.toBytes(28));
        put6.addColumn("f2".getBytes(),"sex".getBytes(),Bytes.toBytes("1"));
        put6.addColumn("f2".getBytes(),"address".getBytes(),Bytes.toBytes("内蒙人"));
        put6.addColumn("f2".getBytes(),"phone".getBytes(),Bytes.toBytes("15788888888"));
        put6.addColumn("f2".getBytes(),"say".getBytes(),Bytes.toBytes("貂蝉去哪了"));

        List<Put> listPut = new ArrayList<Put>();
        listPut.add(put);
        listPut.add(put2);
        listPut.add(put3);
        listPut.add(put4);
        listPut.add(put5);
        listPut.add(put6);

        //插入数据
        myuser.put(listPut);
        //关闭连接
        connection.close();

    }
       //查询 主键 rowkey  0004 的人  获取某一行
      public  static  void   searchData() throws IOException {
        //连接数据库
          Configuration  conf =new Configuration();
          conf.set("hbase.zookeeper.quorum","node01:2181,node02:2181,node03:2181");
          Connection connection = ConnectionFactory.createConnection(conf);
          //获取到表
          Table myuser = connection.getTable(TableName.valueOf("myuser"));
          // 设置需要读取的数据(rowkey)
          Get  get=new Get("0004".getBytes());
           //获取某一个列族的数据
          // get.addFamily("f1".getBytes());
           //获取某一个指定列族下的特定列 ,查询
            //get.addColumn("f1".getBytes(),"name".getBytes());

          // 读取数据  一个result 就是一行数据
          Result result = myuser.get(get);
           //遍历数据
          Cell[] cells = result.rawCells();
          for (Cell cell : cells) {
              //获取列族
            //  System.out.println(Bytes.toString(CellUtil.cloneFamily(cell)));
              //获取属性
             // System.out.println(Bytes.toString(CellUtil.cloneQualifier(cell)));
              //获取value 的值
              System.out.println(Bytes.toString(CellUtil.cloneValue(cell)));
              if (Bytes.toString(CellUtil.cloneQualifier(cell)).equals("id" )|| Bytes.toString(CellUtil.cloneQualifier(cell)).equals("age")){
                  System.out.println(Bytes.toString(CellUtil.cloneFamily(cell)));
                  System.out.println(Bytes.toString(CellUtil.cloneQualifier(cell)));
                  System.out.println(Bytes.toString(CellUtil.cloneValue(cell)));
              }else{
                  System.out.println(Bytes.toString(CellUtil.cloneFamily(cell)));
                  System.out.println(Bytes.toString(CellUtil.cloneQualifier(cell)));
                  System.out.println(Bytes.toString(CellUtil.cloneValue(cell)));
              }
          }
          //关闭连接
          connection.close();

      }
        //通过starRowKey   和 endRowKey 进行扫描
      public  static  void  scanrowkey() throws IOException {
          //连接数据库
          Configuration  conf =new Configuration();
          conf.set("hbase.zookeeper.quorum","node01:2181,node02:2181,node03:2181");
           Connection connection=ConnectionFactory.createConnection(conf);
          Table myuser = connection.getTable(TableName.valueOf("myuser"));
           Scan  scan=new Scan();
             scan.setStartRow("0002".getBytes());
             scan.setStopRow("0006".getBytes());
          ResultScanner scanner = myuser.getScanner(scan);
          for (Result result : scanner) {
              System.out.println("rowkey"+Bytes.toString(result.getRow()));
              Cell[] cells = result.rawCells();
              for (Cell cell : cells) {
                  if (Bytes.toString(CellUtil.cloneQualifier(cell)).equals("id" )|| Bytes.toString(CellUtil.cloneQualifier(cell)).equals("age")){
                      System.out.println(Bytes.toString(CellUtil.cloneFamily(cell)));
                      System.out.println(Bytes.toString(CellUtil.cloneQualifier(cell)));
                      System.out.println(Bytes.toString(CellUtil.cloneRow(cell)));
                      System.out.println(Bytes.toInt(CellUtil.cloneValue(cell)));
                  }else {
                      System.out.println(Bytes.toString(CellUtil.cloneFamily(cell)));
                      System.out.println(Bytes.toString(CellUtil.cloneQualifier(cell)));
                      System.out.println(Bytes.toString(CellUtil.cloneRow(cell)));
                      System.out.println(Bytes.toString(CellUtil.cloneValue(cell)));
                  }
              }
          }
             
      }
      // 过滤器 查询rowKey 小于0005的数据
     public  static  void  rowKeyFilter() throws IOException {
         //连接数据库
         Configuration  conf =new Configuration();
         conf.set("hbase.zookeeper.quorum","node01:2181,node02:2181,node03:2181");
         Connection connection=ConnectionFactory.createConnection(conf);
         Table myuser = connection.getTable(TableName.valueOf("myuser"));
         Scan  scan=new Scan();
         // 行的过滤器
        // RowFilter  rowFilter=new RowFilter(CompareFilter.CompareOp.GREATER_OR_EQUAL,new BinaryComparator("0005".getBytes()));
        // scan.setFilter(rowFilter);
          // 列族的过滤器
        // FamilyFilter familyFilter = new FamilyFilter(CompareFilter.CompareOp.EQUAL, new BinaryComparator("f2".getBytes()));
         //scan.setFilter(familyFilter);
          //列名的过滤器
        // QualifierFilter name1 = new QualifierFilter(CompareFilter.CompareOp.EQUAL, new SubstringComparator("name"));
       //  scan.setFilter(name1);
         //单值列的过滤器
         SingleColumnValueFilter singleColumnValueFilter = new SingleColumnValueFilter("f1".getBytes(), "name".getBytes(), CompareFilter.CompareOp.NOT_EQUAL, "刘备".getBytes());
         scan.setFilter(singleColumnValueFilter);
         ResultScanner scanner = myuser.getScanner(scan);
         for (Result result : scanner) {
             String rowkey = Bytes.toString(result.getRow());
             String name = Bytes.toString(result.getValue("f1".getBytes(), "name".getBytes()));
             System.out.println(rowkey+"      "+name);
         }
     }
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值