Package org.apache.hadoop.util
Class LineReader
- java.lang.Object
-
- org.apache.hadoop.util.LineReader
-
- All Implemented Interfaces:
Closeable,AutoCloseable
@LimitedPrivate("MapReduce") @Unstable public class LineReader extends Object implements CloseableA class that provides a line reader from an input stream. Depending on the constructor used, lines will either be terminated by:- one of the following: '\n' (LF) , '\r' (CR), or '\r\n' (CR+LF).
- or, a custom byte sequence delimiter
-
-
Constructor Summary
Constructors Constructor Description LineReader(InputStream in)Create a line reader that reads from the given stream using the default buffer-size (64k).LineReader(InputStream in, byte[] recordDelimiterBytes)Create a line reader that reads from the given stream using the default buffer-size, and using a custom delimiter of array of bytes.LineReader(InputStream in, int bufferSize)Create a line reader that reads from the given stream using the given buffer-size.LineReader(InputStream in, int bufferSize, byte[] recordDelimiterBytes)Create a line reader that reads from the given stream using the given buffer-size, and using a custom delimiter of array of bytes.LineReader(InputStream in, org.apache.hadoop.conf.Configuration conf)Create a line reader that reads from the given stream using theio.file.buffer.sizespecified in the givenConfiguration.LineReader(InputStream in, org.apache.hadoop.conf.Configuration conf, byte[] recordDelimiterBytes)Create a line reader that reads from the given stream using theio.file.buffer.sizespecified in the givenConfiguration, and using a custom delimiter of array of bytes.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidclose()Close the underlying stream.protected intfillBuffer(InputStream in, byte[] buffer, boolean inDelimiter)protected intgetBufferPosn()protected intgetBufferSize()intreadLine(org.apache.hadoop.io.Text str)Read from the InputStream into the given Text.intreadLine(org.apache.hadoop.io.Text str, int maxLineLength)Read from the InputStream into the given Text.intreadLine(org.apache.hadoop.io.Text str, int maxLineLength, int maxBytesToConsume)Read one line from the InputStream into the given Text.protected voidunsetNeedAdditionalRecordAfterSplit()
-
-
-
Constructor Detail
-
LineReader
public LineReader(InputStream in)
Create a line reader that reads from the given stream using the default buffer-size (64k).- Parameters:
in- The input stream- Throws:
IOException
-
LineReader
public LineReader(InputStream in, int bufferSize)
Create a line reader that reads from the given stream using the given buffer-size.- Parameters:
in- The input streambufferSize- Size of the read buffer- Throws:
IOException
-
LineReader
public LineReader(InputStream in, org.apache.hadoop.conf.Configuration conf) throws IOException
Create a line reader that reads from the given stream using theio.file.buffer.sizespecified in the givenConfiguration.- Parameters:
in- input streamconf- configuration- Throws:
IOException
-
LineReader
public LineReader(InputStream in, byte[] recordDelimiterBytes)
Create a line reader that reads from the given stream using the default buffer-size, and using a custom delimiter of array of bytes.- Parameters:
in- The input streamrecordDelimiterBytes- The delimiter
-
LineReader
public LineReader(InputStream in, int bufferSize, byte[] recordDelimiterBytes)
Create a line reader that reads from the given stream using the given buffer-size, and using a custom delimiter of array of bytes.- Parameters:
in- The input streambufferSize- Size of the read bufferrecordDelimiterBytes- The delimiter- Throws:
IOException
-
LineReader
public LineReader(InputStream in, org.apache.hadoop.conf.Configuration conf, byte[] recordDelimiterBytes) throws IOException
Create a line reader that reads from the given stream using theio.file.buffer.sizespecified in the givenConfiguration, and using a custom delimiter of array of bytes.- Parameters:
in- input streamconf- configurationrecordDelimiterBytes- The delimiter- Throws:
IOException
-
-
Method Detail
-
close
public void close() throws IOExceptionClose the underlying stream.- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceCloseable- Throws:
IOException
-
readLine
public int readLine(org.apache.hadoop.io.Text str, int maxLineLength, int maxBytesToConsume) throws IOExceptionRead one line from the InputStream into the given Text.- Parameters:
str- the object to store the given line (without newline)maxLineLength- the maximum number of bytes to store into str; the rest of the line is silently discarded.maxBytesToConsume- the maximum number of bytes to consume in this call. This is only a hint, because if the line cross this threshold, we allow it to happen. It can overshoot potentially by as much as one buffer length.- Returns:
- the number of bytes read including the (longest) newline found.
- Throws:
IOException- if the underlying stream throws
-
fillBuffer
protected int fillBuffer(InputStream in, byte[] buffer, boolean inDelimiter) throws IOException
- Throws:
IOException
-
readLine
public int readLine(org.apache.hadoop.io.Text str, int maxLineLength) throws IOExceptionRead from the InputStream into the given Text.- Parameters:
str- the object to store the given linemaxLineLength- the maximum number of bytes to store into str.- Returns:
- the number of bytes read including the newline
- Throws:
IOException- if the underlying stream throws
-
readLine
public int readLine(org.apache.hadoop.io.Text str) throws IOExceptionRead from the InputStream into the given Text.- Parameters:
str- the object to store the given line- Returns:
- the number of bytes read including the newline
- Throws:
IOException- if the underlying stream throws
-
getBufferPosn
protected int getBufferPosn()
-
getBufferSize
protected int getBufferSize()
-
unsetNeedAdditionalRecordAfterSplit
protected void unsetNeedAdditionalRecordAfterSplit()
-
-