BZip2Codec (Apache Hadoop Main 3.5.0 API)
Description: declaration: package: org.apache.hadoop.io.compress, class: BZip2Codec

Package org.apache.hadoop.io.compress

# Class BZip2Codec

java.lang.Object
org.apache.hadoop.io.compress.BZip2Codec

All Implemented Interfaces:
  `Configurable`, `CompressionCodec`, `SplittableCompressionCodec`

@Public @Evolving public class BZip2Codec extends Object implements Configurable, SplittableCompressionCodec
This class provides output and input streams for bzip2 compression and decompression. It uses the native bzip2 library on the system if possible, else it uses a pure-Java implementation of the bzip2 algorithm. The configuration parameter io.compression.codec.bzip2.library can be used to control this behavior. In the pure-Java mode, the Compressor and Decompressor interfaces are not implemented. Therefore, in that mode, those methods of CompressionCodec which have a Compressor or Decompressor type argument, throw UnsupportedOperationException. Currently, support for splittability is available only in the pure-Java mode; therefore, if a SplitCompressionInputStream is requested, the pure-Java implementation is used, regardless of the setting of the configuration parameter mentioned above.

- ## Nested Class Summary

  ## Nested classes/interfaces inherited from interface org.apache.hadoop.io.compress.CompressionCodec

  `org.apache.hadoop.io.compress.CompressionCodec.Util`

  ## Nested classes/interfaces inherited from interface org.apache.hadoop.io.compress.SplittableCompressionCodec

  `SplittableCompressionCodec.READ_MODE`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `BZip2Codec()`
  Creates a new instance of BZip2Codec.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `Compressor`
  `createCompressor()`
  Create a new `Compressor` for use by this `CompressionCodec`.
  `Decompressor`
  `createDecompressor()`
  Create a new `Decompressor` for use by this `CompressionCodec`.
  `CompressionInputStream`
  `createInputStream(InputStream in)`
  Create a `CompressionInputStream` that will read from the given input stream and return a stream for uncompressed data.
  `CompressionInputStream`
  `createInputStream(InputStream in, Decompressor decompressor)`
  Create a `CompressionInputStream` that will read from the given `InputStream` with the given `Decompressor`, and return a stream for uncompressed data.
  `SplitCompressionInputStream`
  `createInputStream(InputStream seekableIn, Decompressor decompressor, long start, long end, SplittableCompressionCodec.READ_MODE readMode)`
  Creates CompressionInputStream to be used to read off uncompressed data in one of the two reading modes. i.e.
  `CompressionOutputStream`
  `createOutputStream(OutputStream out)`
  Create a `CompressionOutputStream` that will write to the given `OutputStream`.
  `CompressionOutputStream`
  `createOutputStream(OutputStream out, Compressor compressor)`
  Create a `CompressionOutputStream` that will write to the given `OutputStream` with the given `Compressor`.
  `Class<? extends Compressor>`
  `getCompressorType()`
  Get the type of `Compressor` needed by this `CompressionCodec`.
  `Configuration`
  `getConf()`
  Return the configuration used by this object.
  `Class<? extends Decompressor>`
  `getDecompressorType()`
  Get the type of `Decompressor` needed by this `CompressionCodec`.
  `String`
  `getDefaultExtension()`
  .bz2 is recognized as the default extension for compressed BZip2 files
  `void`
  `setConf(Configuration conf)`
  Set the configuration to be used by this object.
  `static void`
  `writeHeader(OutputStream out)`

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Constructor Details

  - ### BZip2Codec

    public BZip2Codec()
    Creates a new instance of BZip2Codec.

- ## Method Details

  - ### setConf

    public void setConf(Configuration conf)
    Set the configuration to be used by this object.
    Specified by:
      `setConf` in interface `Configurable`
    Parameters:
      `conf` - the configuration object.

  - ### getConf

    public Configuration getConf()
    Return the configuration used by this object.
    Specified by:
      `getConf` in interface `Configurable`
    Returns:
      the configuration object used by this objec.

  - ### createOutputStream

    public CompressionOutputStream createOutputStream(OutputStream out) throws IOException
    Create a `CompressionOutputStream` that will write to the given `OutputStream`.
    Specified by:
      `createOutputStream` in interface `CompressionCodec`
    Parameters:
      `out` - the location for the final output stream
    Returns:
      a stream the user can write uncompressed data to, to have it compressed
    Throws:
      `IOException` - raised on errors performing I/O.

  - ### createOutputStream

    public CompressionOutputStream createOutputStream(OutputStream out, Compressor compressor) throws IOException
    Create a `CompressionOutputStream` that will write to the given `OutputStream` with the given `Compressor`.
    Specified by:
      `createOutputStream` in interface `CompressionCodec`
    Parameters:
      `out` - the location for the final output stream
      `compressor` - compressor to use
    Returns:
      a stream the user can write uncompressed data to, to have it compressed
    Throws:
      `IOException` - raised on errors performing I/O.

  - ### getCompressorType

    public Class<? extends Compressor> getCompressorType()
    Get the type of `Compressor` needed by this `CompressionCodec`.
    Specified by:
      `getCompressorType` in interface `CompressionCodec`
    Returns:
      the type of compressor needed by this codec.

  - ### createCompressor

    public Compressor createCompressor()
    Create a new `Compressor` for use by this `CompressionCodec`.
    Specified by:
      `createCompressor` in interface `CompressionCodec`
    Returns:
      a new compressor for use by this codec

  - ### createInputStream

    public CompressionInputStream createInputStream(InputStream in) throws IOException
    Create a `CompressionInputStream` that will read from the given input stream and return a stream for uncompressed data.
    Specified by:
      `createInputStream` in interface `CompressionCodec`
    Parameters:
      `in` - the stream to read compressed bytes from
    Returns:
      a stream to read uncompressed bytes from
    Throws:
      `IOException` - raised on errors performing I/O.

  - ### createInputStream

    public CompressionInputStream createInputStream(InputStream in, Decompressor decompressor) throws IOException
    Create a `CompressionInputStream` that will read from the given `InputStream` with the given `Decompressor`, and return a stream for uncompressed data.
    Specified by:
      `createInputStream` in interface `CompressionCodec`
    Parameters:
      `in` - the stream to read compressed bytes from
      `decompressor` - decompressor to use
    Returns:
      a stream to read uncompressed bytes from
    Throws:
      `IOException` - raised on errors performing I/O.

  - ### createInputStream

    public SplitCompressionInputStream createInputStream(InputStream seekableIn, Decompressor decompressor, long start, long end, SplittableCompressionCodec.READ_MODE readMode) throws IOException
    Creates CompressionInputStream to be used to read off uncompressed data in one of the two reading modes. i.e. Continuous or Blocked reading modes
    Specified by:
      `createInputStream` in interface `SplittableCompressionCodec`
    Parameters:
      `seekableIn` - The InputStream
      `start` - The start offset into the compressed stream
      `end` - The end offset into the compressed stream
      `readMode` - Controls whether progress is reported continuously or only at block boundaries.
      `decompressor` - decompressor.
    Returns:
      CompressionInputStream for BZip2 aligned at block boundaries
    Throws:
      `IOException` - raised on errors performing I/O.

  - ### getDecompressorType

    public Class<? extends Decompressor> getDecompressorType()
    Get the type of `Decompressor` needed by this `CompressionCodec`.
    Specified by:
      `getDecompressorType` in interface `CompressionCodec`
    Returns:
      the type of decompressor needed by this codec.

  - ### createDecompressor

    public Decompressor createDecompressor()
    Create a new `Decompressor` for use by this `CompressionCodec`.
    Specified by:
      `createDecompressor` in interface `CompressionCodec`
    Returns:
      a new decompressor for use by this codec

  - ### getDefaultExtension

    public String getDefaultExtension()
    .bz2 is recognized as the default extension for compressed BZip2 files
    Specified by:
      `getDefaultExtension` in interface `CompressionCodec`
    Returns:
      A String telling the default bzip2 file extension

  - ### writeHeader

    @VisibleForTesting public static void writeHeader(OutputStream out) throws IOException
    Throws:
      `IOException`