Package org.apache.druid.segment.data
Class EncodedStringDictionaryWriter
- java.lang.Object
-
- org.apache.druid.segment.data.EncodedStringDictionaryWriter
-
- All Implemented Interfaces:
DictionaryWriter<String>,Serializer
public class EncodedStringDictionaryWriter extends Object implements DictionaryWriter<String>
-
-
Field Summary
Fields Modifier and Type Field Description static byteVERSION
-
Constructor Summary
Constructors Constructor Description EncodedStringDictionaryWriter(DictionaryWriter<byte[]> delegate, StringEncodingStrategy encodingStrategy)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description Stringget(int dictId)Returns an object that has already been written via theDictionaryWriter.write(T)method.intgetCardinality()Returns the number of items that have been written so far in this dictionary.longgetSerializedSize()Returns the number of bytes, that this Serializer will write to the output _channel_ (not smoosher) on aSerializer.writeTo(java.nio.channels.WritableByteChannel, org.apache.druid.java.util.common.io.smoosh.FileSmoosher)call.booleanisSorted()voidopen()Prepares the writer for writingintwrite(String objectToWrite)Writes an object to the dictionary.voidwriteTo(WritableByteChannel channel, FileSmoosher smoosher)Writes the serialized form of this object.
-
-
-
Field Detail
-
VERSION
public static final byte VERSION
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
EncodedStringDictionaryWriter
public EncodedStringDictionaryWriter(DictionaryWriter<byte[]> delegate, StringEncodingStrategy encodingStrategy)
-
-
Method Detail
-
isSorted
public boolean isSorted()
- Specified by:
isSortedin interfaceDictionaryWriter<String>
-
open
public void open() throws IOExceptionDescription copied from interface:DictionaryWriterPrepares the writer for writing- Specified by:
openin interfaceDictionaryWriter<String>- Throws:
IOException- if there is a problem with IO
-
write
public int write(@Nullable String objectToWrite) throws IOException
Description copied from interface:DictionaryWriterWrites an object to the dictionary.Returns the index of the value that was just written. This is defined as the `int` value that can be passed into
DictionaryWriter.get(int)such that it will return the same value back.- Specified by:
writein interfaceDictionaryWriter<String>- Parameters:
objectToWrite- object to be written to the dictionary- Returns:
- index of the value that was just written
- Throws:
IOException- if there is a problem with IO
-
get
@Nullable public String get(int dictId) throws IOException
Description copied from interface:DictionaryWriterReturns an object that has already been written via theDictionaryWriter.write(T)method.- Specified by:
getin interfaceDictionaryWriter<String>- Parameters:
dictId- index of the object to return- Returns:
- the object identified by the given index
- Throws:
IOException- if there is a problem with IO
-
getCardinality
public int getCardinality()
Description copied from interface:DictionaryWriterReturns the number of items that have been written so far in this dictionary. Any number lower than this cardinality can be passed intoDictionaryWriter.get(int)and a value will be returned. If a value greater than or equal to the cardinality is passed intoDictionaryWriter.get(int)all sorts of things could happen, but likely none of them are good.- Specified by:
getCardinalityin interfaceDictionaryWriter<String>- Returns:
- the number of items that have been written so far
-
getSerializedSize
public long getSerializedSize() throws IOExceptionDescription copied from interface:SerializerReturns the number of bytes, that this Serializer will write to the output _channel_ (not smoosher) on aSerializer.writeTo(java.nio.channels.WritableByteChannel, org.apache.druid.java.util.common.io.smoosh.FileSmoosher)call.- Specified by:
getSerializedSizein interfaceSerializer- Throws:
IOException
-
writeTo
public void writeTo(WritableByteChannel channel, FileSmoosher smoosher) throws IOException
Description copied from interface:SerializerWrites the serialized form of this object. The entire object may be written to the provided channel, or the object may be split over the provided channel and files added to the {@link FileSmoosher], where additional channels can be created viaFileSmoosher.addWithSmooshedWriter(String, long). The latter approach is useful when the serialized form of the object is too large for a single smoosh container. At the time this javadoc was written, the max smoosh container size is limit to the maxByteBuffersize.- Specified by:
writeToin interfaceSerializer- Throws:
IOException
-
-