RHADOOP 初试

RHADOOP 环境安装能够参考如下文章:http://chen.yi.bo.blog.163.com/blog/static/1506211092012720111910827/ java


注意事项: apache

1.环境变量设置: app

另外须要配置Hadoop相关的环境变量,照例修改/etc/environment文件,添加两句。
HADOOP_CMD="/home/yibo/hadoop/hadoop-1.0.3/bin/hadoop"
HADOOP_STREAMING="/home/yibo/hadoop/hadoop-1.0.3/contrib/streaming/hadoop-streaming-1.0.3.jar"

我自做聪明,把环境变量设置到/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的童鞋有所帮助。

相关文章
相关标签/搜索