使用RHadoop结合hdfs存储R语言输入数据
1 R语言是著名的开源统计分析和绘图语言,但限于功能,只能进行单机存储数据和计算,通过hadoop的功能可以存储更多的数据和并行计算。
Rhadoop包括rhdfs、rmr2、rhbase等R语言插件,rhdfs插件可以加载hdfs文件系统,rmr2可以使用mapreduce做并行计算。
这里先使用rhdfs来简单介绍下r语言怎样读取较大的文件
2 首先安装rhdfs插件,由于R语言要调用java 因此需要安装rjava插件
install.packages("rJava")
其他插件需要时也可以安装,这里将后续需要的插件一起安装
install.packages("reshape2")
install.packages("Rcpp")
install.packages("iterators")
install.packages("itertools")
install.packages("digest")
install.packages("RJSONIO")
install.packages(“functional")
3 还需要配置好java的环境变量,这里以我测试环境为例,请根据实际情况修改
写入/home/hadoop/.bashrc
export JAVA_HOME=/jdk
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export HADOOP_HOME=/home/hadoop/hadoop
export HADOOP_BIN=$HADOOP_HOME/bin
export HADOOP_SBIN=$HADOOP_HOME/sbin
export PATH=$PATH:$HADOOP_BIN:$HADOOP_SBIN
export HADOOP_CMD=$HADOOP_HOME/bin/hadoop
export HADOOP_STREAMING=$HADOOP_HOME/share/hadoop/tools/lib/hadoop-streaming-2.6.0.jar
4 之后下载最新版本的rhdfs插件包到本地
https://github.com/RevolutionAnalytics/RHadoop/wiki/Downloads
5 在本地安装rhdfs并加载
bash-3.2$ R CMD INSTALL /root/rhdfs_1.0.8.tar
6 好了,我们来构造一些简单数据测试吧
bash> seq 1 100 > average_100.txt
bash> hadoop dfs -mkdir /tmp
bash> hadoop dfs -copyFromLocal average_100.txt /tmp
7 在R语言环境中,执行下面的命令
library(rhdfs)
hdfs.init()
hdfs.cat("/tmp/average_100.txt")
[1] "0" "1" "2" .... "100"
8 通过简单的插件就可以进行统计和计算了,如计算平均值
mean(as.numerica(hdfs.cat("/tmp/average_100.txt")))