RHADOOP 环境安装能够参考如下文章:http://chen.yi.bo.blog.163.com/blog/static/1506211092012720111910827/ java
注意事项: apache
1.环境变量设置: app
我自做聪明,把环境变量设置到/etc/profile下,结果悲剧,报错 oop
java.lang.RuntimeException: PipeMapRed.waitOutputThreads(): subprocess failed with code 1
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.PipeReducer.close(PipeReducer.java:137)
at org.apache.hadoop.mapred.ReduceTask.runOldReducer(ReduceTask.java:530)
at org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:421)
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:1136)
at org.apache.hadoop.mapred.Child.main(Child.java:249)
log4j:WARN No appenders could be found for logger (org.apache.hadoop.hdfs.DFSClient).
spa
,所以仍是老老实这样作吧。 code
2.原文的wordcount实例代码有点问题。 orm
wordcount <- function (input, output=NULL, split='[[:punct:][:space:]]+'){
mapreduce(input=input, output=output,
map=function(k, v){
v2=unlist(strsplit(x=v, split=split))
v3=v2[v2!=' ']
lapply(v3, function(w){keyval(w, 1)})
},
reduce=function(k, vv){
keyval(k, sum(unlist(vv)))
})
} blog
这样跑的话JOB仍是报错,由于map方法没有返回keyval类型值,keyval类型值为list(key<list>,value<list>), ip
而lapply调用后返回的为list(list<key,value>,list<key,value>.......),所以应该把红色部分改成:keyval(v3,rep(1,length(v3))) 就OK了。 hadoop
这是本人初试RHADOOP后遇到的问题,记录如下供之后参考,同时但愿对其余正在研究RHADOOP的童鞋有所帮助。