当前位置: 首页>>代码示例>>Java>>正文


Java CacheableDeserializer.deserialize方法代码示例

本文整理汇总了Java中org.apache.hadoop.hbase.io.hfile.CacheableDeserializer.deserialize方法的典型用法代码示例。如果您正苦于以下问题:Java CacheableDeserializer.deserialize方法的具体用法?Java CacheableDeserializer.deserialize怎么用?Java CacheableDeserializer.deserialize使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在org.apache.hadoop.hbase.io.hfile.CacheableDeserializer的用法示例。


在下文中一共展示了CacheableDeserializer.deserialize方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: read

import org.apache.hadoop.hbase.io.hfile.CacheableDeserializer; //导入方法依赖的package包/类
/**
 * Transfers data from file to the given byte buffer
 * @param offset The offset in the file where the first byte to be read
 * @param length The length of buffer that should be allocated for reading
 *               from the file channel
 * @return number of bytes read
 * @throws IOException
 */
@Override
public Cacheable read(long offset, int length, CacheableDeserializer<Cacheable> deserializer)
    throws IOException {
  Preconditions.checkArgument(length >= 0, "Length of read can not be less than 0.");
  ByteBuffer dstBuffer = ByteBuffer.allocate(length);
  if (length != 0) {
    accessFile(readAccessor, dstBuffer, offset);
    // The buffer created out of the fileChannel is formed by copying the data from the file
    // Hence in this case there is no shared memory that we point to. Even if the BucketCache evicts
    // this buffer from the file the data is already copied and there is no need to ensure that
    // the results are not corrupted before consuming them.
    if (dstBuffer.limit() != length) {
      throw new RuntimeException("Only " + dstBuffer.limit() + " bytes read, " + length
          + " expected");
    }
  }
  return deserializer.deserialize(new SingleByteBuff(dstBuffer), true, MemoryType.EXCLUSIVE);
}
 
开发者ID:apache,项目名称:hbase,代码行数:27,代码来源:FileIOEngine.java

示例2: read

import org.apache.hadoop.hbase.io.hfile.CacheableDeserializer; //导入方法依赖的package包/类
@Override
public Cacheable read(long offset, int length, CacheableDeserializer<Cacheable> deserializer)
    throws IOException {
  byte[] dst = new byte[length];
  bufferArray.getMultiple(offset, length, dst);
  return deserializer.deserialize(new SingleByteBuff(ByteBuffer.wrap(dst)), true,
      MemoryType.EXCLUSIVE);
}
 
开发者ID:apache,项目名称:hbase,代码行数:9,代码来源:FileMmapEngine.java

示例3: read

import org.apache.hadoop.hbase.io.hfile.CacheableDeserializer; //导入方法依赖的package包/类
@Override
public Cacheable read(long offset, int length, CacheableDeserializer<Cacheable> deserializer)
    throws IOException {
  ByteBuff dstBuffer = bufferArray.asSubByteBuff(offset, length);
  // Here the buffer that is created directly refers to the buffer in the actual buckets.
  // When any cell is referring to the blocks created out of these buckets then it means that
  // those cells are referring to a shared memory area which if evicted by the BucketCache would
  // lead to corruption of results. Hence we set the type of the buffer as SHARED_MEMORY
  // so that the readers using this block are aware of this fact and do the necessary action
  // to prevent eviction till the results are either consumed or copied
  return deserializer.deserialize(dstBuffer, true, MemoryType.SHARED);
}
 
开发者ID:apache,项目名称:hbase,代码行数:13,代码来源:ByteBufferIOEngine.java

示例4: getBlock

import org.apache.hadoop.hbase.io.hfile.CacheableDeserializer; //导入方法依赖的package包/类
/**
 * Get the buffer of the block with the specified key.
 * @param key block's cache key
 * @param caching true if the caller caches blocks on cache misses
 * @param repeat Whether this is a repeat lookup for the same block
 * @param updateCacheMetrics Whether we should update cache metrics or not
 * @return buffer of specified cache key, or null if not in cache
 */
@Override
public Cacheable getBlock(BlockCacheKey key, boolean caching, boolean repeat,
    boolean updateCacheMetrics) {
  if (!cacheEnabled) {
    return null;
  }
  RAMQueueEntry re = ramCache.get(key);
  if (re != null) {
    if (updateCacheMetrics) {
      cacheStats.hit(caching, key.isPrimary());
    }
    re.access(accessCount.incrementAndGet());
    return re.getData();
  }
  BucketEntry bucketEntry = backingMap.get(key);
  if (bucketEntry != null) {
    long start = System.nanoTime();
    ReentrantReadWriteLock lock = offsetLock.getLock(bucketEntry.offset());
    try {
      lock.readLock().lock();
      // We can not read here even if backingMap does contain the given key because its offset
      // maybe changed. If we lock BlockCacheKey instead of offset, then we can only check
      // existence here.
      if (bucketEntry.equals(backingMap.get(key))) {
        int len = bucketEntry.getLength();
        ByteBuffer bb = ByteBuffer.allocate(len);
        int lenRead = ioEngine.read(bb, bucketEntry.offset());
        if (lenRead != len) {
          throw new RuntimeException("Only " + lenRead + " bytes read, " + len + " expected");
        }
        CacheableDeserializer<Cacheable> deserializer =
          bucketEntry.deserializerReference(this.deserialiserMap);
        Cacheable cachedBlock = deserializer.deserialize(bb, true);
        long timeTaken = System.nanoTime() - start;
        if (updateCacheMetrics) {
          cacheStats.hit(caching, key.isPrimary());
          cacheStats.ioHit(timeTaken);
        }
        bucketEntry.access(accessCount.incrementAndGet());
        if (this.ioErrorStartTime > 0) {
          ioErrorStartTime = -1;
        }
        return cachedBlock;
      }
    } catch (IOException ioex) {
      LOG.error("Failed reading block " + key + " from bucket cache", ioex);
      checkIOErrorIsTolerated();
    } finally {
      lock.readLock().unlock();
    }
  }
  if (!repeat && updateCacheMetrics) {
    cacheStats.miss(caching, key.isPrimary());
  }
  return null;
}
 
开发者ID:fengchen8086,项目名称:ditb,代码行数:65,代码来源:BucketCache.java

示例5: getBlock

import org.apache.hadoop.hbase.io.hfile.CacheableDeserializer; //导入方法依赖的package包/类
/**
 * Get the buffer of the block with the specified key.
 * @param key block's cache key
 * @param caching true if the caller caches blocks on cache misses
 * @param repeat Whether this is a repeat lookup for the same block
 * @param updateCacheMetrics Whether we should update cache metrics or not
 * @return buffer of specified cache key, or null if not in cache
 */
@Override
public Cacheable getBlock(BlockCacheKey key, boolean caching, boolean repeat,
    boolean updateCacheMetrics) {
  if (!cacheEnabled)
    return null;
  RAMQueueEntry re = ramCache.get(key);
  if (re != null) {
    if (updateCacheMetrics) cacheStats.hit(caching);
    re.access(accessCount.incrementAndGet());
    return re.getData();
  }
  BucketEntry bucketEntry = backingMap.get(key);
  if (bucketEntry != null) {
    long start = System.nanoTime();
    IdLock.Entry lockEntry = null;
    try {
      lockEntry = offsetLock.getLockEntry(bucketEntry.offset());
      if (bucketEntry.equals(backingMap.get(key))) {
        int len = bucketEntry.getLength();
        ByteBuffer bb = ByteBuffer.allocate(len);
        int lenRead = ioEngine.read(bb, bucketEntry.offset());
        if (lenRead != len) {
          throw new RuntimeException("Only " + lenRead + " bytes read, " + len + " expected");
        }
        CacheableDeserializer<Cacheable> deserializer =
          bucketEntry.deserializerReference(this.deserialiserMap);
        Cacheable cachedBlock = deserializer.deserialize(bb, true);
        long timeTaken = System.nanoTime() - start;
        if (updateCacheMetrics) {
          cacheStats.hit(caching);
          cacheStats.ioHit(timeTaken);
        }
        bucketEntry.access(accessCount.incrementAndGet());
        if (this.ioErrorStartTime > 0) {
          ioErrorStartTime = -1;
        }
        return cachedBlock;
      }
    } catch (IOException ioex) {
      LOG.error("Failed reading block " + key + " from bucket cache", ioex);
      checkIOErrorIsTolerated();
    } finally {
      if (lockEntry != null) {
        offsetLock.releaseLockEntry(lockEntry);
      }
    }
  }
  if (!repeat && updateCacheMetrics) cacheStats.miss(caching);
  return null;
}
 
开发者ID:grokcoder,项目名称:pbase,代码行数:59,代码来源:BucketCache.java


注:本文中的org.apache.hadoop.hbase.io.hfile.CacheableDeserializer.deserialize方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。