Details
-
Bug
-
Status: Closed
-
Minor
-
Resolution: Fixed
-
None
-
None
-
None
Description
Streaming code at times can work on data that's not UTF-8, for instance image/audio data. The StreamBaseRecordReader tries to log some status info, which contains part of the record, using the LOG.info() call. This call throws this exception :
java.lang.ArrayIndexOutOfBoundsException
at java.lang.System.arraycopy(Native Method)
at java.io.BufferedOutputStream.write(BufferedOutputStream.java:111)
at org.apache.hadoop.mapred.TaskLog$Writer.write(TaskLog.java:217)
at org.apache.hadoop.mapred.TaskLogAppender.append(TaskLogAppender.java:51)
at org.apache.log4j.AppenderSkeleton.doAppend(AppenderSkeleton.java:230)
at org.apache.log4j.helpers.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:65)
at org.apache.log4j.Category.callAppenders(Category.java:203)
at org.apache.log4j.Category.forcedLog(Category.java:388)
at org.apache.log4j.Category.log(Category.java:853)
at org.apache.commons.logging.impl.Log4JLogger.info(Log4JLogger.java:133)
at org.apache.hadoop.streaming.StreamBaseRecordReader.numRecStats(StreamBaseRecordReader.java:114)
at org.apache.hadoop.streaming.StreamXmlRecordReader.next(StreamXmlRecordReader.java:99)
at org.apache.hadoop.mapred.MapTask$1.next(MapTask.java:157)
at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:46)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:175)
at org.apache.hadoop.mapred.TaskTracker$Child.main(TaskTracker.java:1445)