RHADOOP 初试

RHADOOP 环境安装可以参考以下文章:http://chen.yi.bo.blog.163.com/blog/static/1506211092012720111910827/


注意事项:

1.环境变量设置:

另外需要配置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下,结果悲剧,报错

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).

,因此还是老老实这样做吧。


2.原文的wordcount实例代码有点问题。

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)))
            })
}


这样跑的话JOB还是报错,因为map方法没有返回keyval类型值,keyval类型值为list(key<list>,value<list>),

而lapply调用后返回的为list(list<key,value>,list<key,value>.......),因此应该把红色部分改为:keyval(v3,rep(1,length(v3))) 就OK了。

这是本人初试RHADOOP后遇到的问题,记录以下供以后参考,同时希望对其他正在研究RHADOOP的童鞋有所帮助。



你可能感兴趣的:(hadoop,数据挖掘,大数据,r,R语言,RHadoop)