1. SparkR的安装配置

1.1.       R与Rstudio的安装

1.1.1.           R的安装

我们的工作环境都是在Ubuntu下操作的,所以只介绍Ubuntu下安装R的方法:

1)  在/etc/apt/sources.list添加源

deb http://mirror.bjtu.edu.cn/cran/bin/linux/ubuntu precise/,

然后更新源apt-get update;

2)  通过apt-get安装:

sudo apt-get install r-base

1.1.2.           Rstudio的安装

官网有详细介绍:

sudo apt-get install gdebi-core

sudo apt-get install libapparmor1  # Required only for Ubuntu, not Debian

wget http://download2.rstudio.org/rstudio-server-0.97.551-amd64.deb

sudo gdebi rstudio-server-0.97.551-amd64.deb

1.2.       rJava安装

1.2.1.           rJava介绍

rJava是一个R语言和Java语言的通信接口,通过底层JNI实现调用,允许在R中直接调用Java的对象和方法。

rJava还提供了Java调用R的功能,是通过JRI(Java/R Interface)实现的。JRI现在已经被嵌入到rJava的包中,我们也可以单独试用这个功能。现在rJava包,已经成为很多基于Java开发R包的基础功能组件。

正是由于rJava是底层接口,并使用JNI作为接口调用,所以效率非常高。在JRI的方案中,JVM通过内存直接加载RVM,调用过程性能几乎无损耗,因此是非常高效连接通道,是R和Java通信的首选开发包。

1.2.2.           rJava安装

1)  配置rJava环境

执行R CMD javareconf

root@testnode4:/home/payton# R CMD javareconf

2)  启动R并安装rJava

root@testnode4:/home/payton# R

> install.packages("rJava")

1.3.       SparkR的安装

1.3.1.           SparkR的代码下载

1.3.2.           SparkR的代码编译

1)  解压SparkR-pkg-master.zip,然后cd  SparkR-pkg-master/

2)  编译的时候需要指明Hadoop版本和Spark版本

SPARK_HADOOP_VERSION=2.4.1 SPARK_VERSION=1.2.0 ./install-dev.sh

至此,单机版的SparkR已经安装完成。

1.3.3.           分布式SparkR的部署配置

1)  编译成功后,会生成一个lib文件夹,进入lib文件夹,打包SparkR为SparkR.tar.gz,这个是分布式SparkR部署的关键。

2)  由打包好的SparkR.tar.gz在各集群节点上安装SparkR

R CMD INSTALL SparkR.tar.gz

至此分布式SparkR搭建完成。

2. SparkR的运行

2.1.       SparkR的运行机制

SparkR是AMPLab发布的一个R开发包,为Apache Spark提供了轻量的前端。SparkR提供了Spark中弹性分布式数据集(RDD)的API,用户可以在集群上通过R shell交互性的运行job。SparkR集合了Spark 和R的优势,下面的这3幅图很好的阐释了SparkR的运行机制。

2.2.       用SparkR 进行数据分析

2.2.1.           SparkR基本操作

首先介绍下SparkR的基本操作:

第一步,加载SparkR包

library(SparkR)

第二步,初始化Spark context

sc

,sparkEnvir=list(spark.executor.memory="1g",spark.cores.max="10"))

第三步,读入数据,spark的核心是Resilient Distributed Dataset (RDD),RDDS可以从Hadoop的InputFormats来创建(例如,HDFS文件)或通过转化其它RDDS。例如直接从HDFS读取数据为RDD的示例如下:

lines

另外,也可以通过parallelize函数从向量或列表创建RDD,如:

rdd

到了这里,那么我们就可以运用RDD的动作(actions)和转换(transformations)来对RDD进行操作并产生新的RDD;也可以很容易地调用R开发包,只需要在集群上执行操作前用includePackage读取R开发包就可以了(例:includePackage(sc, Matrix));当然还可以把RDD转换为R语言格式的数据形式来对它进行操作。

具体可参见如下两个链接:

那么下面我们就通过两个示例来看下 SparkR是如何运行的吧。

2.2.2.           SparkR使用举例

1)Example1:word count

#加载SparkR包

library(SparkR)#初始化 Spark context

sc

lines

words

wordCount

counts

output

for (wordcount inoutput) {

cat(wordcount[[1]], ":", wordcount[[2]], "\n")

}

2)Example2:logistic regression

#加载SparkR包

library(SparkR)#初始化 Spark context

sc

appName='sparkr_logistic_regression',

sparkEnvir=list(spark.executor.memory='1g',

spark.cores.max="10"))#从hdfs上读取txt文件, 该RDD由spark集群的4个分区构成

input_rdd

minSplits=4)#解析每个RDD元素的文本(在每个分区上并行)

dataset_rdd

part

part

part

})#我们需要把数据集dataset_rdd分割为训练集(train)和测试集(test)两部分,这里#ptest为测试集的样本比例,如取ptest=0.2,即取dataset_rdd的20%样本数作为测试#集,80%的样本数作为训练集

split_dataset

data_test_rdd

part_test

part_test

})#用剩下的样本数创建训练集RDD

data_train_rdd

part_train

part_train

})#返回测试集RDD和训练集RDD的列表

list(data_test_rdd, data_train_rdd)

}#接下来我们需要转化数据集为R语言的矩阵形式,并增加一列数字为1的截距项,#将输出项y标准化为0/1的形式

get_matrix_rdd

matrix_rdd

m

m

m[,ncol(m)]

})

matrix_rdd

}#由于该训练集中y的值为1与0的样本数比值为7:3,所以我们需要平衡1和0的样本#数,使它们的样本数一致

balance_matrix_rdd

balanced_matrix_rdd

y

index

index

part

part

})

balanced_matrix_rdd

}#分割数据集为训练集和测试集

dataset

matrix_test_rdd

matrix_train_rdd

cache(matrix_test_rdd)

cache(matrix_train_rdd)#初始化向量theta

theta

hypot

}#损失函数的梯度计算

gCost

train

gradient_rdd

X

y

p_gradient

list(list(1, p_gradient))

})

agg_gradient_rdd

collect(agg_gradient_rdd)[[1]][[2]]

}#由梯度下降算法优化损失函数#alpha :学习速率#steps :迭代次数#tol :收敛精度

alpha

while(T) {

cat("step:",step,"\n")

p_gradient

theta

gradient

test

X

y

y_pred

result

})

result

corrects= length(result[result==F])

wrongs= length(result[result==T])

cat("\ncorrects:",corrects,"\n")

cat("wrongs:",wrongs,"\n")

cat("accuracy:",corrects/length(y_pred),"\n")

java通过jri 数据分析_SparkR安装部署及数据分析实例相关推荐

  1. Kong 网关API安装部署以及应用实例----------腾云驾雾

    背景介绍 之前项目上api的接口用的是自己nginx搭建的反向代理接口,觉得功能性比较查差,故而另辟蹊径找到了kong作为接口网关服务. 工作原理 kong会把所有的后端接口对应的数据放到cassan ...

  2. supervisor安装部署和使用实例

    Supervisord是用Python实现的一款非常实用的进程管理工具,类似于monit,monit和supervisord的一个比较大的差异是supervisord管理的进程必须由superviso ...

  3. kattle的java安装,Kettle自定义JDK版本(附Linux下安装部署步骤)

    现需要在某台服务器上安装Kettle8.3,但该机器的JDK版本是JDK1.7,因此需要为Kettle单独指定 JAVA_HOME,方法如下: vi  data-integration/set-pen ...

  4. 一键搞定Java桌面应用安装部署 —— exe4j + Inno Setup 带着JRE, 8M起飞

    转载自:http://www.blogjava.net/huliqing/archive/2008/04/18/193907.html 对于作Java桌面应用来说,比较烦人的就是安装部署问题,客户端是 ...

  5. java做flv直播服务器,EasyDSS流媒体服务器软件(支持RTMP/HLS/HTTP-FLV/视频点播/视频直播)-正式环境安装部署攻略...

    EasyDSS流媒体服务器软件,提供一站式的转码.点播.直播.时移回放服务,极大地简化了开发和集成的工作. 其中,点播功能主要包含:上传.转码.分发.直播功能,主要包含:直播.录像, 直播支持RTMP ...

  6. flume java 安装部署_[Hadoop] Flume安装部署与简单使用

    1. Flume Flume是一个分布式的日志收集框架,针对日志数据进行采集汇总,把日志从A地方搬运到B地方去. 使用场景: RDBMS ==> Sqoop ==> Hadoop 分散在各 ...

  7. 平台打包整合成exe安装部署(java+mysql+jar+redis+activemq+WinSW)

    上篇文章 : https://blog.csdn.net/yueyekkx/article/details/123934814 写了war包的方式,这篇写jar包. 准备工作: 1.下载免安装的Mys ...

  8. 交通数据分析系统:安装部署

    文章目录 交通数据分析系统:安装部署 1.实验描述 2.实验环境 3.相关技能 4.知识点 5.效果图 6.实验步骤 7.总结 交通数据分析系统:安装部署 1.实验描述 出租车数据分析实验环境安装部署 ...

  9. java 环境部署——java源码包的安装——java-rpm包的安装

    1.java 源码包的安装 # tar -xf jdk-8u201-linux-x64.tar.g# mkdir /usr/java# cp jdk1.8.0_201/ /usr/java 设置jav ...

最新文章

  1. DHCP服务器在企业网中的应用
  2. .NET防SQL注入方法
  3. Django 出现 “multiple primary key defined”报错
  4. java哪个城市的需求量大_4大互联网热门城市Java薪资情况,看完你想去哪个城市发展呢?...
  5. Ubuntu 16.04-17.04开机自动root用户登录(测试可用)
  6. Echarts 地理信息可视化:基于地图显示坐标点信息
  7. C++socket编程(三):3.5 accept读取用户的连接信息
  8. SQL那些事儿(二)
  9. 【单目标优化求解】基于matlab水循环算法求解约束优化问题【含Matlab源码 1428期】
  10. 电脑网易云音乐,网易云音乐的橄榄枝来了?
  11. web压力测试工具介绍
  12. 免费域名邮箱如何申请?怎么给国外发邮件?
  13. python绘制一个太极图案_python中简单易学的绘图:用turtle画太极图
  14. 【天光学术】学前教育论文:幼儿园区角活动中存在的问题及有效对策(节选)
  15. 维护一个大型开源项目,例如vscode是怎样的体验?
  16. 开发手机APP做UI设计,这5个UI错误会置你的APP于死地!
  17. 基于html的购物网站【华为手机购物网站制作】学生网页设计作业源码
  18. Design twelve
  19. 在web代理中对于大的POST数据使用 REQUEST_CONTENT
  20. 中高级前端工程师都需要熟悉的技能--前端缓存

热门文章

  1. HDU-2084(简单DP)
  2. 试一下live writer 插入代码是否会高亮
  3. 导航类查询词的收集方法
  4. 利用wojilu框架仿一个网站的全过程(Step by Step利用wojilu框架开发网站系列二 附源码)...
  5. 设计模式——解释器模式
  6. 19款探岳刷隐藏教程_三星S10系列如何隐藏导航栏 官微“手把手”教你设置
  7. dubbo协议_Dubbo框架支持多少种协议?各有什么特点?文中一一为你揭晓
  8. python未定义名称大小_名称错误:未定义名称“高度”
  9. python编辑器中文字体倒立的_matplotlib的安装和允许中文及几种字体
  10. c语言水仙桃树编程,辰颐物语编辑部整理:春季适合种植哪些花卉品种?樱花和桃花怎么区分?...