Package org.apache.druid.data.input.impl
Class JsonLineReader
java.lang.Object
org.apache.druid.data.input.IntermediateRowParsingReader<byte[]>
org.apache.druid.data.input.TextReader<byte[]>
org.apache.druid.data.input.TextReader.Bytes
org.apache.druid.data.input.impl.JsonLineReader
- All Implemented Interfaces:
InputEntityReader
JsonLineReader reads input text line by line and tries to convert each text line to an JSON object.
Since each text line is processed indepdently, if any exception is thrown when parsing one text line,
exception can be caught by callers to skip current line and continue to process next text line.
This also means that each text line should be a well-formed JSON text, pretty-printed format is not allowed-
Nested Class Summary
Nested classes/interfaces inherited from class org.apache.druid.data.input.TextReader
TextReader.Bytes, TextReader.Strings -
Method Summary
Modifier and TypeMethodDescriptionintReturns the number of header lines to skip.booleanReturns true if the file format needs to process a header line.parseInputRows(byte[] line) Parses the given line into a list ofInputRows.voidprocessHeaderLine(byte[] line) Processes a header line.toMap(byte[] intermediateRow) Converts the given intermediate row into aMap.Methods inherited from class org.apache.druid.data.input.TextReader.Bytes
intermediateRowAsString, makeSourceIteratorMethods inherited from class org.apache.druid.data.input.TextReader
findOrCreateInputRowSignature, getInputRowSchema, intermediateRowIteratorWithMetadata, sourceMethods inherited from class org.apache.druid.data.input.IntermediateRowParsingReader
intermediateRowIterator, read, sample
-
Method Details
-
parseInputRows
Description copied from class:TextReaderParses the given line into a list ofInputRows. Note that some file formats can explode a single line of input into multiple inputRows. This method will be called afterTextReader.getNumHeaderLinesToSkip()andTextReader.processHeaderLine(T).- Specified by:
parseInputRowsin classTextReader<byte[]>- Throws:
ParseException- if it cannot parse the given intermediateRow properlyIOException
-
toMap
Description copied from class:IntermediateRowParsingReaderConverts the given intermediate row into aMap. The returned JSON will be used by InputSourceSampler. Implementations can use any method to convert the given row into a Map. This should return a non-empty list with the same size of the list returned byIntermediateRowParsingReader.parseInputRows(T)or the returned objects will be discarded- Specified by:
toMapin classIntermediateRowParsingReader<byte[]>- Throws:
IOException
-
getNumHeaderLinesToSkip
public int getNumHeaderLinesToSkip()Description copied from class:TextReaderReturns the number of header lines to skip.TextReader.processHeaderLine(T)will be called as many times as the returned number.- Specified by:
getNumHeaderLinesToSkipin classTextReader<byte[]>
-
needsToProcessHeaderLine
public boolean needsToProcessHeaderLine()Description copied from class:TextReaderReturns true if the file format needs to process a header line. This method will be called after skipping lines as many asTextReader.getNumHeaderLinesToSkip().- Specified by:
needsToProcessHeaderLinein classTextReader<byte[]>
-
processHeaderLine
public void processHeaderLine(byte[] line) Description copied from class:TextReaderProcesses a header line. This will be called ifTextReader.needsToProcessHeaderLine()= true.- Specified by:
processHeaderLinein classTextReader<byte[]>
-