Class MapFile

java.lang.Object
org.apache.hadoop.io.MapFile
Direct Known Subclasses:
ArrayFile, SetFile

@Public @Stable public class MapFile extends Object
A file-based map from keys to values.

A map is a directory containing two files, the data file, containing all keys and values in the map, and a smaller index file, containing a fraction of the keys. The fraction is determined by MapFile.Writer.getIndexInterval().

The index file is read entirely into memory. Thus key implementations should try to keep themselves small.

Map files are created by adding entries in-order. To maintain a large database, perform updates by copying the previous version of a database and merging in a sorted change list, to create a new version of the database in a new file. Sorting large change lists can be done with SequenceFile.Sorter.

  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Class
    Description
    static class 
    org.apache.hadoop.io.MapFile.Merger
    Class to merge multiple MapFiles of same Key and Value types to one MapFile
    static class 
    org.apache.hadoop.io.MapFile.Reader
    Provide access to an existing map.
    static class 
    org.apache.hadoop.io.MapFile.Writer
    Writes a new map.
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final String
    The name of the data file.
    static final String
    The name of the index file.
  • Constructor Summary

    Constructors
    Modifier
    Constructor
    Description
    protected
     
  • Method Summary

    Modifier and Type
    Method
    Description
    static void
    Deletes the named map file.
    static long
    fix(FileSystem fs, Path dir, Class<? extends Writable> keyClass, Class<? extends Writable> valueClass, boolean dryrun, Configuration conf)
    This method attempts to fix a corrupt MapFile by re-creating its index.
    static void
    main(String[] args)
     
    static void
    rename(FileSystem fs, String oldName, String newName)
    Renames an existing map directory.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

  • Constructor Details

    • MapFile

      protected MapFile()
  • Method Details

    • rename

      public static void rename(FileSystem fs, String oldName, String newName) throws IOException
      Renames an existing map directory.
      Parameters:
      fs - fs.
      oldName - oldName.
      newName - newName.
      Throws:
      IOException - raised on errors performing I/O.
    • delete

      public static void delete(FileSystem fs, String name) throws IOException
      Deletes the named map file.
      Parameters:
      fs - input fs.
      name - input name.
      Throws:
      IOException - raised on errors performing I/O.
    • fix

      public static long fix(FileSystem fs, Path dir, Class<? extends Writable> keyClass, Class<? extends Writable> valueClass, boolean dryrun, Configuration conf) throws Exception
      This method attempts to fix a corrupt MapFile by re-creating its index.
      Parameters:
      fs - filesystem
      dir - directory containing the MapFile data and index
      keyClass - key class (has to be a subclass of Writable)
      valueClass - value class (has to be a subclass of Writable)
      dryrun - do not perform any changes, just report what needs to be done
      conf - configuration.
      Returns:
      number of valid entries in this MapFile, or -1 if no fixing was needed
      Throws:
      Exception - Exception.
    • main

      public static void main(String[] args) throws Exception
      Throws:
      Exception