• 技术文章 >Java >java教程

    hbase访问方式之Java api的实例详解

    黄舟黄舟2017-09-30 10:06:58原创774
    这篇文章主要介绍了hbase访问方式之java api,需要的朋友可以参考下

    Hbase的访问方式

    1、Native Java API:最常规和高效的访问方式;

    2、HBase Shell:HBase的命令行工具,最简单的接口,适合HBase管理使用;

    3、Thrift Gateway:利用Thrift序列化技术,支持C++,PHP,Python等多种语言,适合其他异构系统在线访问HBase表数据;

    4、REST Gateway:支持REST 风格的Http API访问HBase, 解除了语言限制;

    5、MapReduce:直接使用MapReduce作业处理Hbase数据;

    6、使用Pig/hive处理Hbase数据。

    常用Java API的用法:

    1、加载配置


    Configuration config = HBaseConfiguration.create();  
    //可以自定义配置,也可以从自定义配置文件中读取 
    /*config.set("hbase.zookeeper.property.clientPort", "4181"); 
    config.set("hbase.zookeeper.quorum", "hadoop.datanode5.com,hadoop.datanode2.com,hadoop.datanode3.com"); 
    config.set("hbase.master", "hadoop.datanode3.com\\:600000");*/

    2、表的创建、表信息修改、表删除


    HBaseAdmin admin = new HBaseAdmin(config); 
    //创建表 
    HTableDescriptor htd = new HTableDescriptor(tableName); 
    htd.addFamily(new HColumnDescriptor("cf1")); 
    htd.addFamily(new HColumnDescriptor("cf2")); 
    admin.createTable(htd); 
    //修改表信息 
    admin.disableTable(tableName); 
    // modifying existing ColumnFamily 
    admin.modifyColumn(tableName, new HColumnDescriptor("cf1"));  
    admin.enableTable(tableName);  
    //删除表 
    admin.disableTable(Bytes.toBytes(tableName)); 
    admin.deleteTable(Bytes.toBytes(tableName));

    3、添加记录


    /** 在多次使用时,建议用HTablePool 
     HTable table = new HTable(config, tableName); 
     => 
     HTablePool pool = new HTablePool(config, 1000); 
     HTableInterface table = pool.getTable(tableName);*/ 
    HTable table = new HTable(config, tableName); 
     
    /** 
     * 在插入操作时,默认不适用任何缓存 
     * 可自定义使用缓存,以及缓存大小 
     * 每个任务最后需要手工调用 flushCommits(); 
     */ 
    /*table.setAutoFlush(false); 
    table.setWriteBufferSize(1024);*/ 
     
    Put put1 = new Put(Bytes.toBytes(rowKey)); 
    if (ts == 0) { 
      put1.add(Bytes.toBytes(family), Bytes.toBytes(qualifier), Bytes.toBytes(value)); 
    } else { 
        //自定义版本时,从自定义的版本号,类型为long 
      put1.add(Bytes.toBytes(family), Bytes.toBytes(qualifier), ts,Bytes.toBytes(value)); 
    } 
    table.put(put1); 
    //table.flushCommits();

    4、查询,根据Rowkey查询


    Get get1 = new Get(Bytes.toBytes(rowKey)); 
    Result result = table.get(get1); 
    System.out.println("get result:" + Bytes.toString(result.getValue(Bytes.toBytes(family), Bytes.toBytes(qualifier)))); 
    Result[] result = table.get(List<Get>);//查询指定Rowkey的多条记录

    5、查询,指定条件和rowkey区间查询


    Scan scan = new Scan(); 
    //默认缓存大小为1,设置成一个合理的值,可以减少scan过程中next()的时间开销,代价是客户端的内存 
    scan.setCaching(500); 
    scan.setCacheBlocks(false); 
    //根据startRowKey、endRowKey查询 
    //Scan scan = new Scan(Bytes.toBytes("startRowKey"), Bytes.toBytes("endRowKey")); 
    //rowKey之外的过滤条件,在List中可以add; 
    /**List<Filter> filters = new ArrayList<Filter>(); 
    Filter filter = new SingleColumnValueFilter("familyName".getBytes(), 
        "qualifierName".getBytes(), 
        CompareOp.EQUAL, 
        Bytes.toBytes("value")); 
    filters.add(filter); 
    scan.setFilter(new FilterList(filters));*/ 
    ResultScanner scanner = table.getScanner(scan); 
    System.out.println("scan result list:"); 
    for (Result result : scanner) { 
      System.out.println(Bytes.toString(result.getRow())); 
      System.out.println(Bytes.toString(result.getValue(Bytes.toBytes("data"), Bytes.toBytes("data1")))); 
      System.out.println(Bytes.toString(result.getValue(Bytes.toBytes("data"), Bytes.toBytes("data2")))); 
    } 
    scanner.close();

    总结

    以上就是hbase访问方式之Java api的实例详解的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:hbase Java api
    上一篇:Java中关于守护线程和用户线程的详细介绍 下一篇:Java企业级项目的开发思路
    PHP编程就业班

    相关文章推荐

    • 归纳整理Java并发知识点• 一起聊聊Java常用数据类型的输入输出• 详细解析Java反射机制原理和几种Class获取方式• 图文详解!什么是Java内存模型• 图文详解Java数据结构与算法

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网