zoukankan      html  css  js  c++  java
  • Hbase学习笔记——客户端API

    介绍HBase的Java API,参考:HBase读写的几种方式(一)java篇 和 Hbase--put、BufferedMutator、get

    一.写HBase

    1.单行put

    HTable非线程安全,切较为低效

    2.客户端的写缓冲区和List<Put>

    一个put操作都是一个RPC操作,只适合小数据量的操作,HBase的API配置了客户端的写缓冲区,缓冲区负责收集put宝座,然后调用RPC操作一次性将put送往服务器。

    默认情况下,客户端缓冲区是禁用的,可以通过将自动刷写(autoflush=false)来激活缓冲区,如果autoflush=true),用户每次调用put方法是都会触发刷写。当激活缓冲区后,单行put不会产生RPC调用,因为存储的Put实例保存在客户端进程的内存中。只有flushCommits方法调用后才会将所有的修改传送到远程服务器。

    默认的写缓冲区大小为2MB(2097152字节),可以在客户端中配置,也可以在habse-site.xml中的hbase.client.write.buffer 配置一个较大的预设值,比如20MB

    显式刷写,即用户调用 flushCommits方法

    隐式刷写,即会在调用put方法和setWriteBufferSize方法后比较超出缓冲区大小后调用 flushCommits方法

    3.使用BufferedMutator

    org.apache.hadoop.hbase.client.BufferedMutator主要用来对HBase的单个表进行操作。它和Put类的作用差不多,但是主要用来实现批量的异步写操作。

    使用BufferedMutator进行批量异步插入的方式,效率更高,参考:HBase新版本Java APIHbase实战--数据读写解析

    import org.apache.hadoop.hbase.client.BufferedMutator;
    /** Helper function to create a table and return the rows that it created. */
    
    private static void writeData(String tableId, int numRows) throws Exception {
      Connection connection = admin.getConnection();
      TableName tableName = TableName.valueOf(tableId);
      BufferedMutator mutator = connection.getBufferedMutator(tableName);
      List<Mutation> mutations = makeTableData(numRows);
      mutator.mutate(mutations);
      mutator.flush();
      mutator.close();
    }
    
  • 相关阅读:
    凸优化之基追踪
    [转]广义正交匹配追踪(gOMP)
    SAMP论文学习
    sublime学习笔记
    IEEE Trans 2009 Stagewise Weak Gradient Pursuits论文学习
    [转]压缩感知重构算法之分段正交匹配追踪(StOMP)
    IEEE Trans 2008 Gradient Pursuits论文学习
    Git学习笔记
    树状数组【bzoj1103】: [POI2007]大都市meg
    模拟赛 10-25上午考试记
  • 原文地址:https://www.cnblogs.com/tonglin0325/p/14207444.html
Copyright © 2011-2022 走看看