@Override
  public MapJoinKey putRow(Writable currentKey, Writable currentValue)
          throws SerDeException, HiveException {
    MapJoinKey key = MapJoinKey.read(output, keyContext, currentKey);
    FlatRowContainer values = (FlatRowContainer)get(key);
    if (values == null) {
      values = new FlatRowContainer();
      put(key, values);
    }
    values.add(valueContext, (BytesWritable)currentValue);
    return key;
  }
Simple wrapper for persistent Hashmap implementing only the put/get/remove/clear interface. The
main memory hash table acts as a cache and all put/get will operate on it first. If the size of
the main memory hash table exceeds a certain threshold, new elements will go into the persistent
hash table.
ql/src/java/org/apache/hadoop/hive/ql/exec/persistence/HashMapWrapper.java