[ 
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

        

Reply via email to