RODPS介绍

2017/03/22 10:51
阅读数 176

这篇文章主要是给外部用户介绍如何使用RODPS的

(一)概念介绍

RODPS能够提供一个桥接的方式,使得可以在R语言环境中无缝的使用MaxCompute(原ODPS)里面的数据、计算资源,类似于开源社区的RHive和Rhadoop的功能。
t_1044143988

(二)安装R基础环境

2.1 Linux server

可从源码开始安装,参见https://yq.aliyun.com/articles/60858?spm=5176.100240.searchblog.7.QxcgSP

2.2 MacOSX和Windows

直接从官网可以下载二进制安装包,例如mac可以从https://cran.rstudio.com/bin/macosx/

(三)安装RODPS:

3.1 安装相关依赖包

install.packages("rJava","DBI","RSQLite")

3.2 安装RODPS

在公共环境中对外环境对应的版本请查看 http://repo.aliyun.com/rodps/ 在R运行环境中 使用
install.packages("http://repo.aliyun.com/download/RODPS.tar.gz", repos=NULL)
安装完毕以后还需要配置conf.ini文件,该文件的主要配置项有
access_id=
access_key=
end_point=
project_name=
sqlite_temp=
logview_host=

通过全局变量:export RODPS_CONFIG=path/to/odps_config.ini或者通过 rodps.init配置odps_config.ini
rodps.init("path/to/odps_config.ini")
这个时候加载包
library(RODPS)
可以使用RODPS,可以先看看版本是哪个
rodps.version()

(四)我们来看看RODPS可以做什么:

对数据和表的基础处理

获取当前项目中的表
rodps.table.list()
查看表结构
_2016_10_18_4_04_46
可以查看表中的行数
rodps.rows.table('test_out')
[1] 144
数据加载
df <- rodps.load.table('test_out')
nrow(df)
[1] 144
从中进行抽样计算,因为示例表数据较少,这里取10%的比例
rodps.sample.srs('test_out','test_out_sample',0.1)
查看其行数
rodps.table.rows("test_out_sample")
[1] 6
用head查看数据
> rodps.table.head("test_out_sample")
a01 a02 a03 a04 class prediction_result prediction_score
1 1 0 0.981775 0.464010 1 1 0.8764194
2 1 0 0.941040 0.426805 1 1 0.8900558
3 1 0 1.000000 0.505525 1 1 0.8837226
4 0 0 0.000000 0.000000 0 0 1.0000000
5 1 0 1.000000 0.727275 1 1 0.8837226
6 1 0 0.917135 0.695605 1 1 0.8747627

还可以用RODPS直接画图
rodps.hist(tablename='test_out',colname='prediction_score',col=rainbow(10),
main="Hist of sample",freq=F)

Rplot

集成到Rstudio中执行

_2016_10_18_4_19_15

远程MaxCompute和本地R环境的数据通道

执行sql获取数据到本地R环境中
df <- rodps.sql("select * from test_out")
从而可以在本地进处理
head(df)
a01 a02 a03 a04 class prediction_result prediction_score
1 1 0 1.000000 0.405855 0 1 0.8208771
2 1 0 1.000000 0.274195 0 1 0.8606207
3 1 0 0.511685 0.497040 0 0 0.8481383
4 1 0 0.987940 0.446990 1 1 0.8764194

或者从本地R环境load数据到MaxCompute
首先创建一张一模一样结构的表
rodps.sql("create table test_out_test like test_out")
然后就可以导入到该表中数据
> rodps.table.write(as.data.frame(df),"test_out_test")
[1] TRUE

查看数据条数
> rodps.table.rows("test_out_test")
[1] 10

(四)总结:

这里简要介绍了RODPS的基本功能,更多信息可以查看帮助文档
help(rodps.sql)
help(rodps.table)

未来RODPS将致力于将本地算法和数据处理运作在分布式系统上面,致力于让用户无缝迁移R社区的开源包,提供类似于sparkR那样的强大的能力。

 

欢迎加入MaxCompute钉钉群讨论

42559c7dde62e4d333c90e02efdf416257a4be27

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部