我尝试使用Cloudera5.5.0实现一个简单的Hadoop map reduce示例 map&reduce步骤应该使用python2.6.6实现
问题:
目录join2*.txt |./join3_映射器.py|排序|/join3_减速器.py在
hadoop jar/usr/lib/hadoop mapreduce/hadoop-流媒体.jar-input/user/cloudera/inputv/join2_gen*.txt-output/user/cloudera/output_tv-mapper/home/cloudera/join3_映射器.py-减速器/家庭/云端/接头3_减速器.py-数字任务1
16/01/06 12:32:32 INFO mapreduce.Job: Task Id : attempt_1452069211060_0026_r_000000_0, Status : FAILED
Error: java.lang.RuntimeException: PipeMapRed.waitOutputThreads(): subprocess failed with code 1
at org.apache.hadoop.streaming.PipeMapRed.waitOutputThreads(PipeMapRed.java:325)
at org.apache.hadoop.streaming.PipeMapRed.mapRedFinished(PipeMapRed.java:538)
at org.apache.hadoop.streaming.PipeReducer.close(PipeReducer.java:134)
at org.apache.hadoop.io.IOUtils.cleanup(IOUtils.java:244)
at org.apache.hadoop.mapred.ReduceTask.runOldReducer(ReduceTask.java:459)
at org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:392)
at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:163)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:415)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1671)
at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158)
如果hadoop命令使用-numreduetasks 0执行, hadoop作业只执行map步骤,成功结束,输出目录包含map步骤的结果文件。
我想减量步骤一定有问题吧?
日志上传时间:2016年1月6日星期三12:33:10-0800 原木长度:222 log4j:警告找不到记录器的附加程序(org.apache.hadoop.ipc服务器). log4j:警告请正确初始化log4j系统。 log4j:WARN有关更多信息,请参见http://logging.apache.org/log4j/1.2/faq.html#noconfig。在
脚本代码: 第一个文件:join3_映射器.py在
#!/usr/bin/env python
import sys
for line in sys.stdin:
line = line.strip() #strip out carriage return
tuple2 = line.split(",") #split line, into key and value, returns a list
if len(tuple2) == 2:
key = tuple2[0]
value = tuple2[1]
if value == 'ABC':
print('%s\t%s' % (key, value) )
elif value.isdigit():
print('%s\t%s' % (key, value) )
第二个文件:join3_减速器.py在
^{pr2}$我尝试过各种不同的方法来声明hadoop命令的输入文件,没有区别,也没有成功。在
我做错什么了?很感谢你的建议,谢谢
多幸运的一拳,和它搏斗了好几天,我知道我成功了:
从本地(unix)执行
很好,我想到使用1个合并的输入文件,而不是提供的6个输入文件,因此:
^{pr2}$然后再次执行相同的hadoop命令,将输入定向到输入文件夹中的mergedInputFile>;完美结果,没有问题,没有异常作业完成。在
对我来说,它提出了一个问题:
尝试将所有输入文本文件放在一个目录中,然后将该目录作为输入传递。这样你就不必合并所有的输入文件了
相关问题 更多 >
编程相关推荐