• Hbase java API 的方法


    使用java   API方法   对hbase的操作

    创建hbase表  添加数据  批量添加  查询  扫描数据

    注:必须导入依赖的jar

    1.使用API创建表

    package com.bw.hbase;
    
    import java.io.IOException;
    
    import org.apache.hadoop.conf.Configuration;
    import org.apache.hadoop.hbase.HBaseConfiguration;
    import org.apache.hadoop.hbase.HColumnDescriptor;
    import org.apache.hadoop.hbase.HTableDescriptor;
    import org.apache.hadoop.hbase.ZooKeeperConnectionException;
    import org.apache.hadoop.hbase.client.HBaseAdmin;
    
    public class HbaseOp {
    //创建表 
        public static void main(String[] args) throws Exception, ZooKeeperConnectionException, IOException {
            Configuration conf= HBaseConfiguration.create();
            conf.set("hbase.zookeeper.quorum", "linux04:2181,linux05:2181,linux06:2181");
            HBaseAdmin admin = new HBaseAdmin(conf);//有一个表的管理对象 DDL
            HTableDescriptor hd = new HTableDescriptor("Nurse");//对hbase表的描述
            HColumnDescriptor hcd = new HColumnDescriptor("info");//对hbase列族的描述
            hcd.setMaxVersions(3);
            HColumnDescriptor hcd1 = new HColumnDescriptor("address");
            hcd1.setMaxVersions(3);
            hd.addFamily(hcd1); 
            hd.addFamily(hcd);
            //判断
            if(!admin.tableExists("Nurse")) {
                admin.createTable(hd);
            }else {
                admin.deleteTable("Nurse");
                admin.createTable(hd);
            }
            System.out.println("create table finished......");
        }
    }

     2.put   添加数据  

    package com.bw.hbase;
    
    import org.apache.hadoop.conf.Configuration;
    import org.apache.hadoop.hbase.HBaseConfiguration;
    import org.apache.hadoop.hbase.client.HTable;
    import org.apache.hadoop.hbase.client.Put;
    
    public class AddData {
        public static void main(String[] args) throws Exception {
            //创建连接
            Configuration conf = HBaseConfiguration.create();
            conf.set("hbase.zookeeper.quorum", "linux04,linux05,linux06");
            HTable table = new HTable(conf, "Nurse");//配置添加的数据的表
            
            Put put = new Put("nurse001".getBytes());//行键
            put.add("info".getBytes(),"age".getBytes(),"30".getBytes());//列簇= 列= 数据
            put.add("info".getBytes(),"salary".getBytes(),"15000".getBytes());
            put.add("address".getBytes(),"city".getBytes(),"bj".getBytes());
            
            table.put(put);//将数据放入
            System.out.println("add data");
        }
    }

    注:去集群中查看  是否添加成功  

    添加之前将集群都启动

    扫描表 scan 'Nurse'

     

    3.Batch批量添加  循环添加 

    package com.bw.hbase;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import org.apache.hadoop.conf.Configuration;
    import org.apache.hadoop.hbase.HBaseConfiguration;
    import org.apache.hadoop.hbase.client.HTable;
    import org.apache.hadoop.hbase.client.Put;
    
    public class BatchAdd {
        public static void main(String[] args) throws Exception {
            //创建和zk的连接
            Configuration conf = HBaseConfiguration.create();
            conf.set("hbase.zookeeper.quorum", "linux04,linux05,linux06");
            
            HTable table = new HTable(conf,"Nurse");
            List<Put> list = new ArrayList<Put>();
            for(int i=1;i<100000;i++) {
                Put put = new Put(("Nurse0000"+i).getBytes());//创建行键
                put.add("info".getBytes(),"name".getBytes(),("No"+i).getBytes());//将列族 列和数据放入
                list.add(put);//将数据行键放入集合
                if(i%1000==0) {//如果...
                    table.put(list);//就将表放入集合
                    list.clear();
                }
            }
            table.put(list);
            System.out.println("batch 批量");
        }
    }

    去集群查看   scan 'Nurse'

     

    4.getData 根据行键得到结果 

    package com.bw.hbase;
    
    import org.apache.hadoop.conf.Configuration;
    import org.apache.hadoop.hbase.HBaseConfiguration;
    import org.apache.hadoop.hbase.client.Get;
    import org.apache.hadoop.hbase.client.HTable;
    import org.apache.hadoop.hbase.client.Result;
    
    public class GetData {
        public static void main(String[] args) throws Exception {
            Configuration conf = HBaseConfiguration.create();
            conf.set("hbase.zookeeper.quorum","linux04,linux05,linux06");
            HTable table = new HTable(conf,"Nurse");//将查询的表名放入
            Get get = new Get("Nurse000099982".getBytes());//根据行键查询
            Result result = table.get(get);//根据行键得到结果
            byte[] value = result.getValue("info".getBytes(), "name".getBytes());
            System.out.println("查询结果 列族 和列信息:"+new String(value));//打印查询结果
            String row = new String(result.getRow());//得到行键信息
            System.out.println("行键:"+row);
        }
    }

     5.Scan扫描数据 注: scan不加参数扫描的是所有数据  加参数是 扫描的中间的

    package com.bw.hbase;
    
    import org.apache.hadoop.conf.Configuration;
    import org.apache.hadoop.hbase.HBaseConfiguration;
    import org.apache.hadoop.hbase.client.HTable;
    import org.apache.hadoop.hbase.client.Result;
    import org.apache.hadoop.hbase.client.ResultScanner;
    import org.apache.hadoop.hbase.client.Scan;
    
    public class ScanData {
        public static void main(String[] args) throws Exception {
            Configuration conf = HBaseConfiguration.create();
            conf.set("hbase.zookeeper.quorum", "linux04,linux05,linux06");
            
            HTable table = new HTable(conf,"Nurse");
            //Scan sc = new Scan();//如果参数是空的 扫描所有的数据  
            Scan sc = new Scan("Nurse00000".getBytes(),"Nurse0000100".getBytes());
            ResultScanner scanner = table.getScanner(sc);
            for (Result r : scanner) {
                System.out.println("行键row:"+new String(r.getRow()));//行键
                System.out.println("查询数据的结果:"+new String(r.getValue("info".getBytes(), "name".getBytes())));
            }
        }
    }
    注:是按照字典排序:1 11 111 2 22 223

    6.delete

    package com.bw.hbase;
    
    import org.apache.hadoop.conf.Configuration;
    import org.apache.hadoop.hbase.HBaseConfiguration;
    import org.apache.hadoop.hbase.client.Delete;
    import org.apache.hadoop.hbase.client.HTable;
    
    
    public class DeleteTest {
        public static void main(String[] args) throws Exception {
            Configuration conf = HBaseConfiguration.create();
            conf.set("hbase.zookeeper.quorum", "linux04,linux05,linux06");
            HTable table = new HTable(conf,"Nurse");
            Delete delete = new Delete("Nurse00001".getBytes());//根据行键删除   删除行键的东西
            table.delete(delete);
            System.out.println("删除成功");
            
        }
    }
     
  • 相关阅读:
    IIS文件大小限制
    XAMPP 配置多端口 多站点
    C# 复制文件和文件夹
    Windows下 Python 安装包的配置
    从数据库读取数据绑定到TreeView(内含设置样式,图片)
    异步请求数据简单例子
    Jmeter使用_StringFromFile函数需要添加编码方式
    利用Fitnesse和Jmeter实现接口性能测试
    简易覆盖率信息收集框架
    如何对遗留代码进行单元测试(scrumgathering听后感)
  • 原文地址:https://www.cnblogs.com/JBLi/p/10884658.html
Copyright © 2020-2023  润新知