我已经在 shell 脚本中成功实现了一个朴素贝叶斯分类器,但是当我尝试将它作为映射器(hadoop 流)运行以处理大约 300,000 行时,我收到以下错误:
java.lang.RuntimeException: PipeMapRed.waitOutputThreads(): subprocess failed with code 254
at org.apache.hadoop.streaming.PipeMapRed.waitOutputThreads(PipeMapRed.java:362)
at org.apache.hadoop.streaming.PipeMapRed.mapRedFinished(PipeMapRed.java:576)
at org.apache.hadoop.streaming.PipeMapper.close(PipeMapper.java:135)
at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:57)
at org.apache.hadoop.streaming.PipeMapRunner.run(PipeMapRunner.java:36)
at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:436)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:372)
at org.apache.hadoop.mapred.Child$4.run(Child.java:255)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:396)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1121)
at org.apache.hadoop.mapred.Child.main(Child.java:249)
日志具有相同的内容,并且不包含任何其他额外的调试信息。
有什么建议吗?我有一种预感,它应该是对 hadoop 的内存限制。