|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.apache.avro.io.Encoder
org.apache.avro.io.BinaryEncoder
org.apache.avro.io.BufferedBinaryEncoder
org.apache.avro.io.BlockingBinaryEncoder
public class BlockingBinaryEncoder
A BinaryEncoder implementation that writes large arrays and maps as a
sequence of blocks. So long as individual primitive values fit in memory,
arbitrarily long arrays and maps may be written and subsequently read without
exhausting memory. Values are buffered until the specified block size would
be exceeded, minimizing block overhead.
EncoderFactory.blockingBinaryEncoder(OutputStream, BinaryEncoder)
to construct and configure.
BlockingBinaryEncoder buffers writes, data may not appear on the output until
flush() is called.
BlockingBinaryEncoder is not thread-safe
BinaryEncoder,
EncoderFactory,
Encoder| Method Summary | |
|---|---|
int |
bytesBuffered()
Returns the number of bytes currently buffered by this encoder. |
void |
flush()
|
void |
setItemCount(long itemCount)
Call this method before writing a batch of items in an array or a map. |
void |
startItem()
Start a new item of an array or map. |
void |
writeArrayEnd()
Call this method to finish writing an array. |
void |
writeArrayStart()
Call this method to start writing an array. |
void |
writeBoolean(boolean b)
Write a boolean value. |
void |
writeDouble(double d)
Write a double. |
void |
writeFixed(byte[] bytes,
int start,
int len)
Writes a fixed size binary object. |
void |
writeFloat(float f)
Write a float. |
void |
writeIndex(int unionIndex)
Call this method to write the tag of a union. |
void |
writeInt(int n)
Writes a 32-bit integer. |
void |
writeLong(long n)
Write a 64-bit integer. |
void |
writeMapEnd()
Call this method to terminate the inner-most, currently-opened map. |
void |
writeMapStart()
Call this to start a new map. |
protected void |
writeZero()
Write a zero byte to the underlying output. |
| Methods inherited from class org.apache.avro.io.BinaryEncoder |
|---|
writeBytes, writeBytes, writeEnum, writeNull, writeString, writeString |
| Methods inherited from class org.apache.avro.io.Encoder |
|---|
writeBytes, writeFixed, writeString |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Method Detail |
|---|
public void flush()
throws IOException
flush in interface Flushableflush in class BufferedBinaryEncoderIOException
public void writeBoolean(boolean b)
throws IOException
Encoder
writeBoolean in class BufferedBinaryEncoderIOException
public void writeInt(int n)
throws IOException
Encoder
writeInt in class BufferedBinaryEncoderIOException
public void writeLong(long n)
throws IOException
Encoder
writeLong in class BufferedBinaryEncoderIOException
public void writeFloat(float f)
throws IOException
Encoder
writeFloat in class BufferedBinaryEncoderIOException
public void writeDouble(double d)
throws IOException
Encoder
writeDouble in class BufferedBinaryEncoderIOException
public void writeFixed(byte[] bytes,
int start,
int len)
throws IOException
Encoder
writeFixed in class BufferedBinaryEncoderbytes - The contents to writestart - The position within bytes where the contents
start.len - The number of bytes to write.
IOException
protected void writeZero()
throws IOException
BinaryEncoder
writeZero in class BufferedBinaryEncoderIOException
public void writeArrayStart()
throws IOException
EncoderEncoder.writeArrayStart(). Then, before writing any data for any item
call Encoder.setItemCount(long) followed by a sequence of
Encoder.startItem() and the item itself. The number of
Encoder.startItem() should match the number specified in
Encoder.setItemCount(long).
When actually writing the data of the item, you can call any Encoder method (e.g., Encoder.writeLong(long)). When all items
of the array have been written, call Encoder.writeArrayEnd().
As an example, let's say you want to write an array of records,
the record consisting of an Long field and a Boolean field.
Your code would look something like this:
out.writeArrayStart();
out.setItemCount(list.size());
for (Record r : list) {
out.startItem();
out.writeLong(r.longField);
out.writeBoolean(r.boolField);
}
out.writeArrayEnd();
writeArrayStart in class BinaryEncoderIOException
public void setItemCount(long itemCount)
throws IOException
EncoderEncoder.startItem() followed by any of the
other write methods of Encoder. The number of calls
to Encoder.startItem() must be equal to the count specified
in Encoder.setItemCount(long). Once a batch is completed you
can start another batch with Encoder.setItemCount(long).
setItemCount in class BinaryEncoderitemCount - The number of Encoder.startItem() calls to follow.
IOException
public void startItem()
throws IOException
EncoderEncoder.writeArrayStart() for usage information.
startItem in class BinaryEncoderIOException
public void writeArrayEnd()
throws IOException
EncoderEncoder.writeArrayStart() for usage information.
writeArrayEnd in class BinaryEncoderIOException
public void writeMapStart()
throws IOException
EncoderEncoder.writeArrayStart() for details on usage.
As an example of usage, let's say you want to write a map of
records, the record consisting of an Long field and a Boolean
field. Your code would look something like this:
out.writeMapStart(); out.setItemCount(list.size()); for (Map.Entryentry : map.entrySet()) { out.startItem(); out.writeString(entry.getKey()); out.writeLong(entry.getValue().longField); out.writeBoolean(entry.getValue().boolField); } out.writeMapEnd();
writeMapStart in class BinaryEncoderIOException
public void writeMapEnd()
throws IOException
EncoderEncoder.writeArrayStart() for more details.
writeMapEnd in class BinaryEncoderIOException
public void writeIndex(int unionIndex)
throws IOException
Encoderout.writeIndex(1); out.writeLong(record.longField); out.writeBoolean(record.boolField);
writeIndex in class BinaryEncoderIOExceptionpublic int bytesBuffered()
BinaryEncoderFlushable.flush() to empty the buffer to the underlying output.
bytesBuffered in class BufferedBinaryEncoder
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||