Class SnappyOutputStream
java.lang.Object
java.io.OutputStream
org.xerial.snappy.SnappyOutputStream
- All Implemented Interfaces:
Closeable, Flushable, AutoCloseable
- Direct Known Subclasses:
SnappyHadoopCompatibleOutputStream
This class implements a stream filter for writing compressed data using
Snappy.
The input data is blocked into 32kb size (in default), and each block is
compressed and then passed to the given OutputStream.
- snappy codec header defined in
SnappyCodec(8 bytes) - codec version (4 bytes integer, at least 1) and compatible version (4 bytes integer)
- compressed block 1 : a pair of (compressed data size [4 byte integer. Big-endian], compressed data...)
- compressed block 2
- ...
SnappyOutputStream cannot be
uncompressed by Snappy.uncompress(byte[]) since the output formats of
Snappy.compress(byte[]) and SnappyOutputStream are different.
Use SnappyInputStream for uncompress the data generated by
SnappyOutputStream.- Author:
- leo
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected byte[]static final intprotected final OutputStreamprotected byte[] -
Constructor Summary
ConstructorsConstructorDescriptionSnappyOutputStream(OutputStream out, int blockSize) SnappyOutputStream(OutputStream out, int blockSize, BufferAllocatorFactory bufferAllocatorFactory) -
Method Summary
Modifier and TypeMethodDescriptionvoidclose()close the streamprotected voidprotected voidvoidflush()voidCompress the raw byte array data.voidwrite(byte[] b, int byteOffset, int byteLength) voidwrite(double[] f) Compress the input array datavoidwrite(double[] f, int off, int len) Compress the input double array datavoidwrite(float[] f) Compress the input array datavoidwrite(float[] f, int off, int len) Compress the input float array datavoidwrite(int b) Writes the specified byte to this output stream.voidwrite(int[] f) Compress the input array datavoidwrite(int[] f, int off, int len) Compress the input int array datavoidwrite(long[] d) Compress the input array datavoidwrite(long[] d, int off, int len) Compress the input long array datavoidwrite(short[] f) Compress the input array datavoidwrite(short[] f, int off, int len) Compress the input short array dataprotected voidOptionally write a preemble before a block.protected voidprotected intMethods inherited from class OutputStream
nullOutputStream, write
-
Field Details
-
MAX_BLOCK_SIZE
public static final int MAX_BLOCK_SIZE- See Also:
-
out
-
inputBuffer
protected byte[] inputBuffer -
outputBuffer
protected byte[] outputBuffer
-
-
Constructor Details
-
SnappyOutputStream
-
SnappyOutputStream
- Parameters:
out-blockSize- byte size of the internal buffer size- Throws:
IllegalArgumentException- when blockSize is larger than 512 MiB
-
SnappyOutputStream
public SnappyOutputStream(OutputStream out, int blockSize, BufferAllocatorFactory bufferAllocatorFactory)
-
-
Method Details
-
write
- Overrides:
writein classOutputStream- Throws:
IOException
-
write
Compress the input long array data- Parameters:
d- input arrayoff- offset in the arraylen- the number of elements in the array to copy- Throws:
IOException
-
write
Compress the input double array data- Parameters:
f- input arrayoff- offset in the arraylen- the number of elements in the array to copy- Throws:
IOException
-
write
Compress the input float array data- Parameters:
f- input arrayoff- offset in the arraylen- the number of elements in the array to copy- Throws:
IOException
-
write
Compress the input int array data- Parameters:
f- input arrayoff- offset in the arraylen- the number of elements in the array to copy- Throws:
IOException
-
write
Compress the input short array data- Parameters:
f- input arrayoff- offset in the arraylen- the number of elements in the array to copy- Throws:
IOException
-
write
Compress the input array data- Parameters:
d-- Throws:
IOException
-
write
Compress the input array data- Parameters:
f-- Throws:
IOException
-
write
Compress the input array data- Parameters:
f-- Throws:
IOException
-
write
Compress the input array data- Parameters:
f-- Throws:
IOException
-
write
Compress the input array data- Parameters:
f-- Throws:
IOException
-
rawWrite
Compress the raw byte array data.- Parameters:
array- array data of any type (e.g., byte[], float[], long[], ...)byteOffset-byteLength-- Throws:
IOException
-
write
Writes the specified byte to this output stream. The general contract for write is that one byte is written to the output stream. The byte to be written is the eight low-order bits of the argument b. The 24 high-order bits of b are ignored.- Specified by:
writein classOutputStream- Throws:
IOException
-
flush
- Specified by:
flushin interfaceFlushable- Overrides:
flushin classOutputStream- Throws:
IOException
-
dumpOutput
- Throws:
IOException
-
compressInput
- Throws:
IOException
-
writeHeader
protected int writeHeader() -
writeBlockPreemble
protected void writeBlockPreemble()Optionally write a preemble before a block. Hadoop requires the actual block data size being written. This base implementation does nothing. Derive implementation can callwriteCurrentDataSize(). -
writeCurrentDataSize
protected void writeCurrentDataSize() -
close
close the stream- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceCloseable- Overrides:
closein classOutputStream- Throws:
IOException
-