Class BlockCompressorStream

All Implemented Interfaces:
Closeable, Flushable, AutoCloseable, org.apache.hadoop.fs.statistics.IOStatisticsSource

@Public @Evolving public class BlockCompressorStream extends CompressorStream
A CompressorStream which works with 'block-based' based compression algorithms, as opposed to 'stream-based' compression algorithms. It should be noted that this wrapper does not guarantee that blocks will be sized for the compressor. If the Compressor requires buffering to effect meaningful compression, it is responsible for it.
  • Constructor Details

    • BlockCompressorStream

      public BlockCompressorStream(OutputStream out, Compressor compressor, int bufferSize, int compressionOverhead)
      Parameters:
      out - stream
      compressor - compressor to be used
      bufferSize - size of buffer
      compressionOverhead - maximum 'overhead' of the compression algorithm with given bufferSize
    • BlockCompressorStream

      public BlockCompressorStream(OutputStream out, Compressor compressor)
      Create a BlockCompressorStream with given output-stream and compressor. Use default of 512 as bufferSize and compressionOverhead of (1% of bufferSize + 12 bytes) = 18 bytes (zlib algorithm).
      Parameters:
      out - stream
      compressor - compressor to be used
  • Method Details

    • write

      public void write(byte[] b, int off, int len) throws IOException
      Write the data provided to the compression codec, compressing no more than the buffer size less the compression overhead as specified during construction for each block. Each block contains the uncompressed length for the block, followed by one or more length-prefixed blocks of compressed data.
      Overrides:
      write in class CompressorStream
      Throws:
      IOException
    • finish

      public void finish() throws IOException
      Description copied from class: CompressionOutputStream
      Finishes writing compressed data to the output stream without closing the underlying stream.
      Overrides:
      finish in class CompressorStream
      Throws:
      IOException - raised on errors performing I/O.
    • compress

      protected void compress() throws IOException
      Overrides:
      compress in class CompressorStream
      Throws:
      IOException