代码改变世界
[登录 · 注册]
  • hbase.client.keyvalue.maxsize的默认值
  • hbase的列族的最大值是在hbase配置里的hbase.client.keyvalue.maxsize,默认大小为10M,即 10485760 。
     
    一直使用hbase作大容量存储,因为hbase易于存取。

    今天,在录入数据的时候,突然报出一个KeyValue size too large。很是奇怪。
    private void validatePut(final Put put) throws IllegalArgumentException{
        if (put.isEmpty()) {
          throw new IllegalArgumentException("No columns to insert");
        }
        if (maxKeyValueSize > 0) {
          for (List list : put.getFamilyMap().values()) {
            for (KeyValue kv : list) {
             if (kv.getLength() > maxKeyValueSize) {
     
     
                throw new IllegalArgumentException("KeyValue size too large");
              }
            }
          }
        }
      }

    说明当某一列的值大于该值的时候,将会抛出该异常,又查看maxKeyValueSize,发现它调用的是hbase配置里的hbase.client.keyvalue.maxsize,默认大小为10M,即 10485760 。将它改大即可。

    但是,当我修改完以后,启动hbase总是出问题,后来又将hbase-env.sh里的HBASE_HEAPSIZE改大。

    后来又将mapred-site.xml中的mapred.tasktracker.indexcache.mb改大,至于大于hbase.client.keyvalue.maxsize,不知道有没有影响,以防万一吧,我觉得hbase的执行应该是跟job有关系的吧。

    请大家多多指教

    private void validatePut(final Put put) throws IllegalArgumentException{  
        if (put.isEmpty()) {  
          throw new IllegalArgumentException("No columns to insert");  
        }  
        if (maxKeyValueSize > 0) {  
          for (List<KeyValue> list : put.getFamilyMap().values()) {  
            for (KeyValue kv : list) {  
            <strong>  if (kv.getLength() > maxKeyValueSize) {</strong>  
      
      
                throw new IllegalArgumentException("KeyValue size too large");  
              }  
            }  
          }  
        }  
      }  
  • 【推广】 阿里云小站-上云优惠聚集地(新老客户同享)更有每天限时秒杀!
    【推广】 云服务器低至0.95折 1核2G ECS云服务器8.1元/月
    【推广】 阿里云老用户升级四重礼遇享6.5折限时折扣!
  • 原文:https://www.cnblogs.com/langtianya/p/8041792.html
走看看 - 开发者的网上家园