Spark是处理大数据的利器,R是统计学的利器,SparkR的诞生可以让数据分析人员方便的处理海量数据成为可能。SparkR是一个R语言包,它提供了轻量级的方式使得可以在R语言中使用Apache Spark。在Spark 1.4中,SparkR实现了分布式的data frame,支持类似查询、过滤以及聚合的操作(类似于R中的data frames:dplyr),但是这个可以操作大规模的TB级别的数据集。本文首先介绍SparkR的安装,然后介绍SparkR的操作。
一. R和RStudio等安装
(1)安装R 3.X版本
sudo apt-get update
sudo apt-get install r-base-core=3.2.2-1trusty0
(2)安装R 2.X版本
sudo apt-get install r-base-core=2.15.3-1precise0precise1
通过上述方式安装的是R 3.X版本,但是好多包还不支持该版本。还可以采用编译源码的方式安装:
./configure --prefix=/home/essex/R --enable-R-shlib
sudo apt-get install build-essential
sudo apt-get install gfortran
sudo apt-get install libreadline6-dev
sudo apt-get install libxt-dev
make
make install
全部安装完毕后,配置R_HOME,R_LIBS和PATH。其中,export R_LIBS=${R_HOME}/lib/R/library。
查看R相应版本,如下所示:
说明:通过命令sudo lsb_release -a查看系统当前的ubuntu版本号。R 2.X和R 3.X版本安装一个即可。
(3)安装RStudio
说明:解压即可,配置环境变量后,直接输入rstudio启动。
(4)安装SparkR
解析:
sudo R CMD javareconf
install.packages("rJava")
下载SparkR的源码:SparkR-pkg-master.zip(https://github.com/amplab-extras/SparkR-pkg)
编译SparkR源码:HADOOP_SPARK_VERSION=2.6.0 SPARK_VERSION=1.5.2 ./install-dev.sh
编译成功后,进入lib文件夹,打包SparkR为SparkR.tar.gz,然后R CMD INSTALL SparkR.tar.gz即可。
说明:rJava是R与Java交互通信的包,rJava,rhdfs,rmr2,rhbase,RHive以此类推。貌似rhdfs等还不支持R 3.X版本。
二. RStudio和sparkR操作Spark集群
首先启动Hadoop和Spark集群,如下所示:
(1)RStdio操作Spark集群
(2)sparkR操作Spark集群
说明:启动bin/sparkR,在该shell下面即可使用R操作Hadoop和Spark集群。
SparkContext是SparkR的切入点,它使得你的R程序和Spark集群互通。你可以通过sparkR.init()来构建SparkContext,然后可以传入类似于应用程序名称的选项给它。如果想使用DataFrames,我们得创建SQLContext,这个可以通过SparkContext来构造。如果你使用SparkR shell,SQLContext 和SparkContext会自动地构建好。如果在RStudio中调用Spark集群,那么需要手工创建。其实,与Scala操作Spark集群完全类似。如下所示:
sc <- sparkR.init()
sqlContext <- sparkRSQL.init(sc)
下面举个例子,如下所示:
参考文献:
[1] ubuntu下安装R:http://blog.sina.com.cn/s/blog_6583048d01018ac5.html
[2] SparkR-pkg:https://github.com/amplab-extras/SparkR-pkg
[3] Spark以及SparkR的安装:
[4] SparkR的安装及使用:http://www.cnblogs.com/hseagle/p/3998853.html?utm_source=tuicool&utm_medium=referral
[5] 在Yarn上运行spark-shell和spark-sql命令行:http://lxw1234.com/archives/2015/08/448.htm
[6] How read json/csv file in SparkR?:http://stackoverflow.com/questions/32352439/how-read-json-csv-file-in-sparkr
[7] SparkR (R on Spark):http://spark.apache.org/docs/latest/sparkr.html
[8] Loading com.databricks.spark.csv via RStudio:http://stackoverflow.com/questions/30870379/loading-com-databricks-spark-csv-via-rstudio/30909511
[9] Cloudera Hadoop CDH上安装R及RHadoop(rhdfs/rmr2/rhbase/RHive):http://www.geedoo.info/installed-on-the-cloudera-hadoop-cdh-r-and-rhadoop-rhdfs-rmr2-rhbase-rhive.html
[10] R: rJava package install failing:http://stackoverflow.com/questions/3311940/r-rjava-package-install-failing
[11] 解惑rJava R与Java的高速通道:http://blog.fens.me/r-rjava-java/
[12] R语言为Hadoop注入统计血脉:http://www.csdn.net/article/2014-02-28/2818579-r-hadoop-intro
[13] RHadoop安装与使用:http://cos.name/2013/03/rhadoop2-rhadoop/
[15] SparkR的安装和实例:http://weibo.com/p/23041864a8c8930102vbk3
[16] Index of /cran/bin/linux/ubuntu/:http://mirror.bjtu.edu.cn/cran/bin/linux/ubuntu/
[17] Ubuntu下编译安装R全记录:http://www.linuxidc.com/Linux/2014-12/111040.htm
[18] rpy2安装使用中的问题:
[19] SparkR安装部署及数据分析实例:http://www.cnblogs.com/payton/p/4227770.html