R语言包安装并实现与HANA的整合
来源:互联网 发布:手机端时时彩源码 编辑:程序博客网 时间:2024/05/13 20:27
1 R语言介绍
R语言是基于S语言的一个GNU计划项目,可以当成是S语言的一种实现,最初是由新西兰奥克兰大学的Ross Ihaka和Robert Gentleman开发,主要用于统计分析,绘图,数据挖掘.
SAP HANA SP5版本发布以来,将SAP HANA的内存计算和R丰富的统计功能进行了完美的结合,使得在SAP HANA数据库中可以使用R语言作为存储过程的开发语言,调用R中的统计函数.
SAP HANA与R之间的交互使用了一种高效数据交换机制,使得中间过程表与R中基于列的数据结构之间传输数据很快.R与SAP HANA之间的通信过程如下图所示:
为了在SAP HANA中执行R代码,R代码将以RLANG存储过程的形式嵌入,并由外部的Rserve负责执行.为了支持R操作符,SAP HANA的计算引擎进行了扩展,对给定的输入对象,经过计算,输出一张结果表.与本地数据库操作符不同的是,R操作符可以利用R函数对数据进行处理.当计算引擎识别出R操作符,便由R Client发出一个请求到Rserve,并发送相关的参数,触发执行,执行完毕之后,结果数据框被发送至计算引擎.
使用限制:
- 1. 在RLang中,参数只支持table类型,所以如果需要传标量(scalar)类型,需要封装到table中,这点需要注意.如果需要传送R中的lists, matrixes到SAP HANA,需要转换成data frame.
- 2. Procedure中的变量名不能包含大写字母.
- 3. 嵌入式R函数必须有至少一个结果,以data frame的形式.
2 R语言安装
在windows平台下的安装相对比较简单,只需要在官网下载对应的安装包然后双击执行安装程序即可.下面主要介绍在linux平台下的安装.安装之前先确保以下软件包存在:
xorg-x11-devel:X window支持
gcc-fortran:编译环境需要
readline-devel:使用R作为独立程序时需要
libgfortran46:SLES 11 sp2需要
然后下载R语言源码包(R-2.15.0.tar.gz已经过测试),然后解压缩,执行
./configure --enable-R-shlib
make
make install
如果安装成功,在shell中执行R命令,可以直接启动交互式R解释器,如图
3 实现与SAP HANA的整合
- (1) 安装Rserve
Rserve是基于TCP/IP的一个R语言服务器端,启动R之后,执行install.packages(“Rserve”),会提示选择镜像,然后自动下载安装.也可以下载Rserve.tar.gz,然后执行install.packages("/PATH/TO/YOUR/Rserve.tar.gz", repos = NULL)进行安装.
安装之后编辑/etc/Rserv.conf文件,添加以下内容:
maxinbuf 10000000
maxsendbuf 0
remote enable
然后启动Rserve,
/usr/local/lib64/R/bin/Rserve --RS-port 30120 --no-save --RS-encoding utf8
- (2) 配置SAP HANA
启动SAP HANA Studio, 选择管理视图,Configuration标签,依次导航至indexserver.ini->calcEngine,添加如下参数
4 简单测试demo
以下demo实现将一个只有一列的质数表,求其平方:
CREATEROWTABLE"WEIYY_TEST"."PRIME" ( "NUMBER" INT CS_INT );
insertinto"WEIYY_TEST"."PRIME"values(2);
insertinto"WEIYY_TEST"."PRIME"values(3);
insertinto"WEIYY_TEST"."PRIME"values(5);
insertinto"WEIYY_TEST"."PRIME"values(7);
CREATEROWTABLE"WEIYY_TEST"."PRIME_SQR" ( "NUMBER" INT CS_INT );
CREATEPROCEDURE MY_F(IN input1 PRIME,OUT result PRIME_SQR)
LANGUAGE RLANGAS
BEGIN
result<-as.data.frame(input1$NUMBER^2);
names(result)<-c("NUMBER");
END;
执行此procedure,结果如下:
5 技巧
在RLANG编写的procedure中,参数是不能为标量类型,但往往很多时候需要传递标量作为输入参数.这个时候,利用SAP HANA的select from dummy语句生成一张临时结果表是一个很好的解决办法.
CREATEPROCEDURE WAPPER_WEIBOSOHU(IN keyword NVARCHAR,IN crawltimeINTEGER,OUT result WEIBOSOHU_TYPE)
LANGUAGE SQLSCRIPT
ASBEGIN
inputinfo=select :keyword AS"keyword",:crawltimeas"crawltime" from DUMMY;
CALL fetch_weibosohu(:inputinfo, :result);
END;
例如上面的procedure中,外层WAPPER_WEIBOSOHU过程是SQLSCRIPT,调用的fetch_weibosohu是一个RLANG procedure,利用select from dummy语句生成临时表,传入内层procedure.
[注:本文的测试案例所使用的SAP HANA版本为SAP HANA SPS7 Revision 70.00]
[参考资料]
1.http://zh.wikipedia.org/wiki/R%E8%AF%AD%E8%A8%80
2. http://help.sap.com/hana/SAP_HANA_R_Integration_Guide_en.pdf
- R语言包安装并实现与HANA的整合
- R语言包安装并实现与HANA的整合
- Fedora21下R语言包的下载安装
- Linux安装R语言包
- R与ArcGIS连接的R语言包“arcgisbinding”
- R语言包在linux上的安装、卸载
- Eclipse语言包的安装与卸载
- 生成R语言包的方法
- 如何安装sap HANA studio并连接到学习机(91ABAP SAP HANA学习机)--开放的SAP HANA学习机
- 如何安装sap HANA studio并连接到学习机(91ABAP SAP HANA学习机)--开放的SAP HANA学习机
- R与JAVA的整合
- R与JAVA的整合
- 【R】Linux安装R语言包(Installing R packages on Linux)
- 【R】Linux安装R语言包(Installing R packages on Linux)
- R语言包
- Linux 语言包的安装
- Apache HttpServer的安装并与Tomcat整合Linux 版
- Hive的安装配置 并与Hbase整合
- 遇到myeclipse加载中突然退掉
- hdoj.1757 A Simple Math Problem【矩阵快速幂】 2015/07/28
- 简单使用visio绘制时序图
- Hive的insert操作
- c++中的dynamic_cast
- R语言包安装并实现与HANA的整合
- Android项目中引用到其他工程
- Gstreamer/Core: Gstreamer 同步机制
- 如何利用自己的电脑做服务器发布tomcat的WEB项目供外网访问
- 笔记
- 提取出某日访问百度次数最多的IP
- 字符子串问题
- 第一个博客
- web实现数据库以及数据查看和简单操作