zoukankan      html  css  js  c++  java
  • Hbase put写入源码分析

    今天有空闲时间看一下HBASE的写入代码

    MutiAction类,是一个action的container,包括get . put. delete。并且是根据region name分组的。其中核心的就是add方法,根据传进来的region name将action分组

    public final class MultiAction<R> {
      // TODO: This class should not be visible outside of the client package.
    
      // map of regions to lists of puts/gets/deletes for that region.
      public Map<byte[], List<Action<R>>> actions =
        new TreeMap<byte[], List<Action<R>>>(Bytes.BYTES_COMPARATOR);
    
      private long nonceGroup = HConstants.NO_NONCE;
    
      public MultiAction() {
        super();
      }
    
      /**
       * Get the total number of Actions
       *
       * @return total number of Actions for all groups in this container.
       */
      public int size() {
        int size = 0;
        for (List<?> l : actions.values()) {
          size += l.size();
        }
        return size;
      }
    
      /**
       * Add an Action to this container based on it's regionName. If the regionName
       * is wrong, the initial execution will fail, but will be automatically
       * retried after looking up the correct region.
       *
       * @param regionName
       * @param a
       */
      public void add(byte[] regionName, Action<R> a) {
        add(regionName, Arrays.asList(a));
      }
    
      /**
       * Add an Action to this container based on it's regionName. If the regionName
       * is wrong, the initial execution will fail, but will be automatically
       * retried after looking up the correct region.
       *
       * @param regionName
       * @param actionList list of actions to add for the region
       */
      public void add(byte[] regionName, List<Action<R>> actionList){
        List<Action<R>> rsActions = actions.get(regionName);
        if (rsActions == null) {
          rsActions = new ArrayList<Action<R>>(actionList.size());
          actions.put(regionName, rsActions);
        }
        rsActions.addAll(actionList);
      }
    
      public void setNonceGroup(long nonceGroup) {
        this.nonceGroup = nonceGroup;
      }
    
      public Set<byte[]> getRegions() {
        return actions.keySet();
      }
    
      public boolean hasNonceGroup() {
        return nonceGroup != HConstants.NO_NONCE;
      }
    
      public long getNonceGroup() {
        return this.nonceGroup;
      }
    }  

    接下来介绍AyncProcess类,该类

    待续

  • 相关阅读:
    自动刷新页面
    docker 数据卷管理
    docker container(容器)
    docker images
    docker 设计原理
    hbase数据原理及基本架构
    详谈kafka的深入浅出
    django介绍及路由系统
    mysql爱之深探测
    mysql数据库内容相关操作
  • 原文地址:https://www.cnblogs.com/Evil-Rebe/p/11684045.html
Copyright © 2011-2022 走看看