在RStudio中通过加载SparkR包来使用SparkR中的相关函数,但是因为每个人的hadoop及spark的版本都不同,所以需要编译适应不同版本的SparkR包。
1.资源准备
Rtools,R,Rstudio,SparkR-pkg-master源代码包,maven(用来编译源码)
2.软件安装及源码获取
》Rtools:安装好后 将Rtools及gcc-4.6.3对应的安装bin目录(如:Rtools\bin,及Rtools\gcc-4.6.3\bin ),放入系统环境变量path中。在命令提示符窗口中输入gcc --help,出现相应的信息则安装成功。
》 maven:下载maven包,将其bin配置到path。命令提示符输入mvn -version可以看到相关信息则配置成功.
》R与Rstudio安装
》 在github的官方网站(https://github.com/amplab-extras/SparkR-pkg)上下载zip包,将其解压。
3.在window环境下对SparkR-pkg-master源码进行编译,使之能被R使用。
》因为window系统下执行的是bat文件。所以需要对SparkR-pkg-master的install-dev.bat文件进行简单的修改:
将记录行 R.exe CMD INSTALL --library=".\lib" pkg\ 中的R.exe改为本机上安装后的位置即指向可执行的R.exe,如:E:\stall_palce\R-3.3.0\R\bin\R.exe
》SparkR-pkg-master默认对应的是hadoop,spark版本为1.0.4及1.1.0,所以当版本不一致时,可以通过修改SparkR-pkg-master/pkg/src目录下的build.sbt文件,将其中对应的版本值改为自己要的版本:如改为hadoop为2.6.0,spark为1.5.1时。
val defaultHadoopVersion = "2.6.0"
val defaultSparkVersion = "1.5.1"
》打开命令提示符,进入到SparkR-pkg-master目录,输入install-dev,其会执行,最后在SparkR-pkg-master目录下生成一个新的目录lib,其中有编译后的SparkR,将编译后的SparkR复制到R的library下,即可在Rstudio通过library(SparkR)导入来开启SparkR的历程啦。(过程有点漫长,有点耐心)。
简单的wordcount示例测试-》可参考博客http://www.cnblogs.com/hseagle/p/3998853.html
注:在编译时,程序会自动到C盘找Rtools下的gcc.exe。找不到会报编译失败的错误,但我不知道设置的参数在哪里,所以将安装后的Rtools复制到c盘解决了这个error。