@Override
  public <T> Future<T> retrieveAsync(String key, Callable<T> fn) throws HiveException {
    final T value = retrieve(key, fn);

    return new Future<T>() {

      @Override
      public boolean cancel(boolean mayInterruptIfRunning) {
        return false;
      }

      @Override
      public boolean isCancelled() {
        return false;
      }

      @Override
      public boolean isDone() {
        return true;
      }

      @Override
      public T get() throws InterruptedException, ExecutionException {
        return value;
      }

      @Override
      public T get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException,
          TimeoutException {
        return value;
      }
    };
  }
ObjectCache. Simple implementation on MR we don't have a means to reuse
Objects between runs of the same task, this acts as a local cache.
ql/src/java/org/apache/hadoop/hive/ql/exec/mr/ObjectCache.java