暂无说说

RHadoop系列之rmr

R jiajun 3个月前 (09-29) 28次浏览 0个评论 扫描二维码

rmr2 是Rhadoop项目的一个包,通过 rmr2 包,R开发人员可以利用R快速在 Hadoop 集群上实现 MapReduce 任务,进行统计分析,而不必花时间专门学习 java。rmr2 包需要在 hadoop 集群中的每个节点上都安装。本文介绍 rmr2 的安装及利用 rmr2 实现简单的 wordcount。

一、操作环境 

1、ubuntu16.04 桌面版 
2、hadoop 版本:hadoop2.7.2 
3、rmr2 版本:rmr2_3.3.1

二、安装过程 

1、依赖包安装

sudo R
install.packages(c("rJava","Rcpp","RJSONIO","digest","functional","reshape2","stringr","plyr","caTools","stringi","magrittr","bitops"),lib="/usr/local/lib/R/site-library")
q()

注:如果在安装 rhdfs 时已经安装过依赖,此步可以跳过。
2、添加环境变量

sudo nano /etc/profile
export HADOOP_STREAMING=/soft/hadoop/share/hadoop/tools/lib/hadoop-streaming-2.7.2.jar
source /etc/profile

3、配置 Renviron

sudo nano /usr/lib/R/etc/Renviron

增加

HADOOP_STREAMING=${HADOOP_STREAMING-'/soft/hadoop/share/hadoop/tools/lib/hadoop-streaming-2.7.2.jar'}

注:如果跳过此步,Rstudio-Server 找不到 HADOOP_STREAMING

Error in hadoop.streaming() : 
Please make sure that the env. variable HADOOP_STREAMING is set 

参考:RHadoop 系列之 Rstudio-Server 找不到"HADOOP_CMD"变量
4、安装 rmr 
下载地址:https://github.com/RevolutionAnalytics/RHadoop/wiki/Downloads 
安装

su root
R CMD INSTALL -l /usr/local/lib/R/site-library rmr2_3.3.1.tar.gz
exit

5、测试 
启动 hadoop

start-dfs.sh
start-yarn.sh

准备数据

library("rhdfs")
hdfs.init()
cat(c("hello","you\n"),file = "hello.txt",sep = ",")
cat(c("hello","me"),file = "hello.txt",sep = ",",append = T)
hdfs.put("hello.txt","/hello/hello.txt")

测试代码:

library(rmr2)
wordcount = function(input, output, pattern = ","){
  
  wc.map = function(., lines) {
    keyval(unlist( strsplit( x = lines,split = pattern)),1)
  }
  
  wc.reduce =function(word, counts ) {
    keyval(word, sum(counts))
  }         
  
  mapreduce(input = input ,output = output, input.format = "text",
            map = wc.map, reduce = wc.reduce,combine = T)
}
input <- '/hello/hello.txt'
output <- "/hello/out"
wordcount(input,output)


查看结果
 

from.dfs("/hello/out/part-00000")

$key
[1] "me"    "you"   "hello"

$val
[1] 1 1 2

 

喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址