Hbase的API(java操作hbase)

目录

 一:创建连接

二:插入一条数据和获取一条数据

三:创建表

四:删除表

五:成批插入数据

六:查看数据

1:scan

2:一个cell一个cell读取

七:注意


 一:创建连接

public class API1 {
    public static void main(String[] args) throws IOException {
        //创建一个配置
        Configuration conf = HBaseConfiguration.create();
        //配置zk地址,通过zk找到hbase(根据自己的配置进行修改)
        conf.set("hbase.zookeeper.quorum", "master:2181,node1:2181,node2:2181");
        //创建连接
        Connection connection = ConnectionFactory.createConnection(conf);
        //创建表
        Admin admin = connection.getAdmin();
        //list操作
        TableName[] tableNames = admin.listTableNames();
        for (TableName tableName : tableNames) {
            System.out.println(tableName);
        }
        //put
        Table testapi = connection.getTable(TableName.valueOf("testapi"));
        //给rk
        Put put = new Put("0001".getBytes());
        //插入一个cell
        Put put1 = put.addColumn("cf1".getBytes(), "name".getBytes(), "张三".getBytes());
        Put put2 = put.addColumn("cf1".getBytes(), "age".getBytes(), "22".getBytes());
        Put put3 = put.addColumn("cf1".getBytes(), "sex".getBytes(), "男".getBytes());

        testapi.put(put);
        //get

        admin.close();
        connection.close();

    }
}

二:插入一条数据和获取一条数据

//获取表 
Table testapi = connection.getTable(TableName.valueOf("testapi"));
        //给rk
        Put put = new Put("0001".getBytes());
        //插入一个cell
        Put put1 = put.addColumn("cf1".getBytes(), "name".getBytes(), "lisi".getBytes());
        Put put2 = put.addColumn("cf1".getBytes(), "age".getBytes(), "21".getBytes());
        Put put3 = put.addColumn("cf1".getBytes(), "sex".getBytes(), "man".getBytes());

        testapi.put(put);
 //获得表
        Table testapi = connection.getTable(TableName.valueOf("testapi"));
        //获取那一条数据
        Get get = new Get("0001".getBytes());
        Result result = testapi.get(get);
        //获取cell
        byte[] row = result.getRow();
        System.out.println(row);
        System.out.println(Bytes.toString(row));
        byte[] value = result.getValue("cf1".getBytes(), "name".getBytes());
        System.out.println(value);
        System.out.println(Bytes.toString(value));

三:创建表

admin = connection.getAdmin();
//   获得表结构     
 HTableDescriptor student = new HTableDescriptor(TableName.valueOf("student"));
  //创建列簇     
 HColumnDescriptor info = new HColumnDescriptor("info");
//将列簇加入表
        student.addFamily(info);
//创建表
  admin.createTable(student);

四:删除表

admin = connection.getAdmin(); 
TableName test = TableName.valueOf("test");
        if(admin.tableExists(test)){//判断一下表是否存在,存在就先disablle一下然后删除
          admin.disableTable(test);
          admin.deleteTable(test);
        }

五:成批插入数据

  //读取学生信息写入hbase (当前模块下学生数据)
        ArrayList<Put> strings = new ArrayList<Put>();
        int b=10;
        TableName student = TableName.valueOf("stu_split");
        Table table = connection.getTable(student);
        BufferedReader br = new BufferedReader(new FileReader("data/students.txt"));
        String line=null;
        while((line=br.readLine())!=null){
            String[] split = line.split(",");
            String id=split[0];
            String name=split[1];
            String age=split[2];
            String gender=split[3];
            String clazz=split[4];
            Put put = new Put(id.getBytes());
            byte[] info = "info".getBytes();
            put.addColumn(info,"name".getBytes(),name.getBytes());
            put.addColumn(info,"age".getBytes(),age.getBytes());
            put.addColumn(info,"gender".getBytes(),gender.getBytes()) ;
            put.addColumn(info,"clazz".getBytes(),clazz.getBytes());
         //一次写入10条
            strings.add(put);
            if(strings.size()==b){
                table.put(strings);
                strings.clear();
            }

        }
//判断是否写完把剩下的写入

        if(!strings.isEmpty()){
            table.put(strings);
        }

六:查看数据

1:scan

 Table student = connection.getTable(TableName.valueOf("student"));
        Scan scan = new Scan();
        Scan scan1 = scan.withStartRow("1500100100".getBytes());
//        Scan scan2 = scan.withStopRow("1500100110".getBytes());
        ResultScanner scanner = student.getScanner(scan);
        for (Result result : scanner) {
            String id = Bytes.toString(result.getRow());
            String name = Bytes.toString(result.getValue("info".getBytes(), "name".getBytes()));
            String age = Bytes.toString(result.getValue("info".getBytes(), "age".getBytes()));
            String gender = Bytes.toString(result.getValue("info".getBytes(), "gender".getBytes()));
            String clazz = Bytes.toString(result.getValue("info".getBytes(), "clazz".getBytes()));
            System.out.println(id+" "+name+" "+age+" "+" "+gender+" "+clazz);
        }

2:一个cell一个cell读取

  Table student = connection.getTable(TableName.valueOf("student"));
            Scan scan = new Scan();
//            Scan scan1 = scan.withStartRow("1500100100".getBytes());
            scan.setLimit(10);
//        Scan scan2 = scan.withStopRow("1500100110".getBytes());
            ResultScanner scanner = student.getScanner(scan);
            for (Result result : scanner) {
                String s1 = Bytes.toString(result.getRow());
                System.out.print(s1+" ");
                List<Cell> cells = result.listCells();
                for (Cell cell : cells) {
                    String s = Bytes.toString(CellUtil.cloneValue(cell));
                    System.out.print(s+" ");
                }
                System.out.println();
            }

七:注意

后面对Hbase的操作都是基于前面连接的

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值