SparkR终极解决方案

 

问题:

Spark支持sparkR需要安装R

如果R需要支持强大的内库,就需要安装第三方内库(需要连网)。

解决步骤:

      第一:安装开发工具集

R对操作系统有一定的要求,所以先安装开发工具集,因为里面有c++的编译

                            配置操作系统yum源(如果不会请百度)

                            安装开发工具集

                            yumgroupinstall –y "Development and Creative Workstation"

      第二:下载并创建epel yum源

1.      找一台可以上网的机器,操作系统需要跟生产环境一样

yum install epel-*

2.         下载yum 源

reposync -n -r  epel  -l  --download-metadata   --downloadcomps

在环境下面就会生产相应的epel目录

3.         创建yum 的yum的包

createrepo epel

在上面的生成的epel 目录之前 ,来创建

4: 创建生产yum源 (注意关闭生产防火墙,关闭selliunx )

         yum install httpd

         systemctl start httpd

        

5:将epel目录拷到 /var/www/html

chmod 777 –R  /var/www/html/epel

 

6: 创建系统yum源

[epel]

name=Extra Packages for Enterprise Linux 7

baseurl=http://10.1.245.14/epel/7/x86_64

enabled=1

path=/

gpgcheck=0

第三:安装R

yum install R-\*

第四:测试sparkR可以使用

1:keyberos认证

kinit -k -t /etc/security/keytabs/spark.headless.keytab  spark-mysqlcluster@DCP.COM

klist #验证

2:准备测试数据

cd /usr/hdp/current/spark-client

su spark

hdfs dfs -copyFromLocal examples/src/main/resources/people.txt people.txt

hdfs dfs -copyFromLocal examples/src/main/resources/people.json people.json

 

3:启动sparkR

cd /usr/hdp/2.3.4.7-4/spark/bin/

./sparkR

看到下图

   ____              __

   / __/__  ___ _____/ /__

  _\ \/ _ \/ _ `/ __/  '_/

 /___/ .__/\_,_/_/ /_/\_\   version  1.5.2

/_/

 

成功

4:测试:在>下面一行一行的输入

sqlContext <- sparkRSQL.init(sc)

df <- createDataFrame(sqlContext, faithful)

head(df)

 

出现如下:

17/04/19 18:11:18 INFO DAGScheduler: Job 1 finished: dfToCols at NativeMethodAccessorImpl.java:-2, took 0.738906 s

  eruptions waiting

1     3.600      79

2     1.800      54

3     3.333      74

4     2.283      62

5     4.533      85

6     2.883      55

成功

查看已安装的包:

>.packages(all.available=T)

[1] "SparkR"     看到这个,可以知道已经支持sparkR

 

 

扩展第三方包

 

1:将第三方的包全部抓下来:

wget -m -e robots=off -U "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6" https://cran.rstudio.com/

2:安装httpd

yum install httpd –y

3:启动apache

systemctl start httpd

4:将cran.rstudio.com 目录里面的内容移动 /var/www/html

5: 使用浏览器检查一下

6:使用R在线的方式进行安装

R -e  "install.packages('shiny', repos='http://ip/')"  #说明 第一个红色是包名,第二个红色是url

7:安装完成

检查

R -e  ’library("ABC")‘

Error in library("ABC")  #报错

 

好了。

 

附录

1、查看已加载的包

>(.packages())

2、卸除已加载的包

如卸除RMySQL包

>detach("package:RMySQL")

3、安装包

>install.packages("rjson")

4、彻底删除已安装的包:

remove.packages(c("pkg1","pkg2") , lib = file.path("path", "to", "library"))

5、查看已安装的包

>installed.packages()[,c('Package','Version','LibPath')]

6、查看某个包提供的函数

> help(package='TSA')

7、已安装的所有的包

.packages(all.available=T)

 

R包安在哪里,可以安装哪些R包

 

首先在R里面输入.libPaths()即可查看当前的R把包安装到了机器的哪个地方,这样可以直接进入目录去查看有哪些包,每个包都会有一个文件夹。

其次你可以用installed.packages()查看你已经安装了哪些包。

最后你可以用available.packages()可以查看自己的机器可以安装哪些包!

4种常见的R包安装方式

R自带函数直接安装

这个是最简单的,而且不需要考虑各种包之间的依赖关系。

对普通的R包,直接install.packages()即可,一般下载不了都是包的名字打错了,或者是R的版本不够。如果下载了安装不了,一般是依赖包没弄好,或者你的电脑缺少一些库文件,如果实在是找不到或者下载慢,一般就用repos=来切换一些镜像。

 > install.packages("ape") ## 直接输入包名字即可

Installing package into ‘C:/Users/jmzeng/Documents/R/win-library/3.1’

(as ‘lib’ is unspecified) ##一般不指定lib,除非你明确知道你的lib是在哪里

trying URL 'http://mirror.bjtu.edu.cn/cran/bin/windows/contrib/3.1/ape_3.4.zip'

Content type 'application/zip' length 1418322 bytes (1.4 Mb)

opened URL  ##根据你选择的镜像,程序会自动拼接好下载链接url

downloaded 1.4 Mb

package ‘ape’ successfully unpacked and MD5 sums checked

##表明你已经安装好包啦

The downloaded binary packages are in

##程序自动下载的原始文件一般放在临时目录,会自动删除

  C:\Users\jmzeng\AppData\Local\Temp\Rtmpy0OivY\downloaded_packages

对于bioconductor的包,我们一般是

source("http://bioconductor.org/biocLite.R") ##安装BiocInstaller

#options(BioC_mirror=”http://mirrors.ustc.edu.cn/bioc/“) 如果需要切换镜像

biocLite("ggbio")

#或者直接

BiocInstaller::biocLite('ggbio')

## 前提是你已经安装好了BiocInstaller

#某些时候你还需要卸载

remove.packages("BiocInstaller")

#然后安装新的

进入主页找到包下载地址

可以选择用R自带的下载器来下载,也可以把下面的url拷贝到浏览器用浏览器来下载

packageurl <- "http://cran.r-project.org/src/contrib/Archive/ggplot2/ggplot2_0.9.1.tar.gz"

packageurl <- "http://cran.r-project.org/src/contrib/Archive/gridExtra/gridExtra_0.9.1.tar.gz"

install.packages(packageurl, repos=NULL, type="source")

#packageurl <- "http://www.bioconductor.org/packages/2.11/bioc/src/contrib/ggbio_1.6.6.tar.gz"

#packageurl <- "http://cran.r-project.org/src/contrib/Archive/ggplot2/ggplot2_1.0.1.tar.gz"

install.packages(packageurl, repos=NULL, type="source")

这样安装的就不需要选择镜像了,也跨越了安装器的版本!

下载到本地后再安装

download.file("http://bioconductor.org/packages/release/bioc/src/contrib/BiocInstaller_1.20.1.tar.gz","BiocInstaller_1.20.1.tar.gz")

##也可以选择用浏览器下载这个包

install.packages("BiocInstaller_1.20.1.tar.gz", repos = NULL)

如果你用的RStudio这样的IDE,那么直接用鼠标就可以操作了。或者用choose.files()来手动选择把下载的源码BiocInstaller_1.20.1.tar.gz放到哪里。但这种形式大部分安装都无法成功,因为R包之间的依赖性很强!

命令行版本安装

如果是linux版本,命令行从网上自动下载包如下:

sudo su - -c \

"R -e \"install.packages('shiny', repos='https://cran.rstudio.com/')\""

如果是linux,命令行安装本地包,在shell的终端

sudo R CMD INSTALL package.tar.gz

 

 

 

 

上一篇:Linux有趣的命令


下一篇:yum的repo文件详解、以及epel简介、yum源的更换