美文网首页大数据我爱编程
hadoop(17)--Hbase的java Demo

hadoop(17)--Hbase的java Demo

作者: ROCK_杰哥 | 来源:发表于2018-05-24 23:56 被阅读153次

    今天就简单的介绍一下Hbase的java的api,有创建表,插入数据,查询数据。
    先进入shell控制台,看看现有几个表:


    image.png

    一个rr表,一个user表

    创建表:

    前提要将对应hbase的lib包下的jar,拷贝到项目中

    
    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.TableName;
    import org.apache.hadoop.hbase.client.HBaseAdmin;
    
    import java.io.IOException;
    
    /**
     * 测试Hbase
     *
     * @author songlj
     * @date 2018/5/24 22:50
     */
    public class HbaseDao {
        public static void main(String[] args) throws IOException {
            Configuration conf =  HBaseConfiguration.create();
            conf.set("hbase.zookeeper.quorum", "my06:2181,my07:2181,my08:2181");
    
            //ddl的操作对象
            HBaseAdmin admin = new HBaseAdmin(conf);
    
            //表名
            TableName name = TableName.valueOf("user1");
    
    
            HTableDescriptor desc = new HTableDescriptor(name);
    
    
            //列族
            HColumnDescriptor base_info = new HColumnDescriptor("base_info");
            HColumnDescriptor extra_info = new HColumnDescriptor("extra_info");
            //最大保存的历史版本个数
            base_info.setMaxVersions(5);
    
            desc.addFamily(base_info);
            desc.addFamily(extra_info);
    
            //创建表
            admin.createTable(desc);
            admin.close();
        }
    }
    

    运行:

    image.png

    结果:

    image.png

    添加数据

     @Test
        public void insertTest() throws Exception{
    
            Configuration conf =  HBaseConfiguration.create();
            conf.set("hbase.zookeeper.quorum", "my06:2181,my07:2181,my08:2181");
    
            //获取dml客户端对象
            HTable user1 = new HTable(conf, "user1");
    
            //给列族中放列以及列值  k_v      hbase存储的是bytes,而字节的数组
            Put name = new Put(Bytes.toBytes("rk0001"));
            name.add(Bytes.toBytes("base_info"), Bytes.toBytes("name"), Bytes.toBytes("songlj"));
    
            Put age = new Put(Bytes.toBytes("rk0001"));
            age.add(Bytes.toBytes("base_info"), Bytes.toBytes("age"), Bytes.toBytes(18));
    
            ArrayList<Put> puts = new ArrayList<>();
            puts.add(name);
            puts.add(age);
    
            user1.put(puts);
            user1.close();
        }
    

    运行

    image.png

    结果

    image.png

    查询数据

        @Test
        public void testGet() throws Exception{
            Configuration conf =  HBaseConfiguration.create();
            conf.set("hbase.zookeeper.quorum", "my06:2181,my07:2181,my08:2181");
            HTable table = new HTable(conf, "user1");
            Get get = new Get(Bytes.toBytes("rk0001"));
            get.setMaxVersions(5);
            Result result = table.get(get);
            List<Cell> cells = result.listCells();
    
    //          result.getValue(family, qualifier);  可以从result中直接取出一个特定的value
    
            //遍历出result中所有的键值对
            for(KeyValue kv : result.list()){
                String family = new String(kv.getFamily());
                System.out.println(family);
                String qualifier = new String(kv.getQualifier());
                System.out.println(qualifier);
                System.out.println(new String(kv.getValue()));
    
    
            }
            table.close();
        }
    

    运行结果:


    image.png

    这里就介绍到这里,还有scan,各种过滤器,就不在这里赘述了,实际的应用中用到了可以去查看一下,很简单,懂得了hbase java api的设计技巧,能够做到举一反三。

    望指正,不吝赐教

    相关文章

      网友评论

        本文标题:hadoop(17)--Hbase的java Demo

        本文链接:https://www.haomeiwen.com/subject/xgmejftx.html