public void deriveBucketMapJoinMapping() {
    if (aliasBucketFileNameMapping != null) {
      aliasBucketBaseFileNameMapping = new LinkedHashMap<String, Map<String, List<String>>>();

      for (Map.Entry<String, Map<String, List<String>>> aliasToMappins
          : aliasBucketFileNameMapping.entrySet()) {
        String tableAlias = aliasToMappins.getKey();
        Map<String, List<String>> fullPathMappings = aliasToMappins.getValue();

        Map<String, List<String>> baseFileNameMapping = new LinkedHashMap<String, List<String>>();
        for (Map.Entry<String, List<String>> inputToBuckets : fullPathMappings.entrySet()) {
          // For a given table and its bucket full file path list,
          // only keep the base file name (remove file path etc).
          // And put the new list into the new mapping.
          String inputPath = inputToBuckets.getKey();
          List<String> bucketPaths = inputToBuckets.getValue();

          List<String> bucketBaseFileNames = new ArrayList<String>(bucketPaths.size());
          //for each bucket file, only keep its base files and store into a new list.
          for (String bucketFName : bucketPaths) {
            bucketBaseFileNames.add(getBaseFileName(bucketFName));
          }
          //put the new mapping
          baseFileNameMapping.put(getBaseFileName(inputPath), bucketBaseFileNames);
        }
        aliasBucketBaseFileNameMapping.put(tableAlias, baseFileNameMapping);
      }
    }
  }
was inner class of MapreLocalWork. context for bucket mapjoin (or smb join)
ql/src/java/org/apache/hadoop/hive/ql/plan/BucketMapJoinContext.java