[ http://issues.apache.org/jira/browse/HADOOP-473?page=comments#action_12429789 ] James P. White commented on HADOOP-473: ---------------------------------------
The proposed patch does read-ahead/seek-back even when the initial newline character is '\n'. That is needlessly wasteful. The could should be simplified to: if (c == '\n') break; if (c == '\r') { long curPos = in.getPos(); char nextC = (char)in.read(); // EOF -1 is also != '\n' so will work with Mac and EOF if (nextC != '\n')) { // seek back 1 char because the line ending is only 1 char in.seek(curPos); } break; } > TextInputFormat does not correctly handle all line endings > ---------------------------------------------------------- > > Key: HADOOP-473 > URL: http://issues.apache.org/jira/browse/HADOOP-473 > Project: Hadoop > Issue Type: Bug > Components: mapred > Affects Versions: 0.5.0, 0.6.0 > Environment: All environments > Reporter: Dennis Kubes > Attachments: text-input-format.patch > > > The current TextInputFormat readLine method calls break on either a single > '\r' or '\n' character. This causes windows formatted text files '\r' '\n' > to leave a trailing '\n' character and the next time the readLine method is > called on the same input stream it returns a blank string. The patch > attached corrects this issue by looking for either single or double character > line endings and positions the input stream to the next line. It correctly > handles windows, mac, and unix line endings. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira