RODPS介绍
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RODPS介绍相关的知识,希望对你有一定的参考价值。
这篇文章主要是给外部用户介绍如何使用RODPS的
(一)概念介绍
RODPS能够提供一个桥接的方式,使得可以在R语言环境中无缝的使用MaxCompute(原ODPS)里面的数据、计算资源,类似于开源社区的RHive和Rhadoop的功能。
(二)安装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.inirodps.init("path/to/odps_config.ini")
这个时候加载包library(RODPS)
可以使用RODPS,可以先看看版本是哪个rodps.version()
(四)我们来看看RODPS可以做什么:
对数据和表的基础处理
获取当前项目中的表rodps.table.list()
查看表结构
可以查看表中的行数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)
集成到Rstudio中执行
远程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那样的强大的能力。
以上是关于RODPS介绍的主要内容,如果未能解决你的问题,请参考以下文章