首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

R工程化—Rest API 之plumber包

作者:stoneR语言中文社区专栏作者

知乎ID:

https://zhuanlan.zhihu.com/p/50987545

很多R使用者都会遇到这样的情境,自己建好了一个模型,预测时需要实时计算,因此需要上线与后端JAVA对接,有以下解决办法:

JAVA调R语言。

以数据库或本地文件为媒介,将对应的R写成传参脚本实时计算好入库或者生成本地文件,再读取结果。

封装成传参的Rest API接口。

对于1有两个问题,稳定性与中文编码。2的话,在数据量小的时候可行,数据量大且不需入库时存储压力大,且要考虑数据前后的对应问题。

本文主要针对3做简单介绍,R中Rest API的包主要有plumber,opencpu。由于plumber使用起来极其方便,把它当做第一选择。

安装

官网案例

首先新建一个名为plumber.R的脚本,

该函数很简单,返回含msg文本输出的list。

为什么要返回list结构?因为plumber会自动把list转化为json结构输出,因此可以很方便地通过list构建你想要的输出结构,plumber会自动转换成对应结构的json。

然后运行:

即可在命令行看到以下输出:

此时,在浏览器输入127.0.0.1:4267/echo?,(get请求可以直接浏览器调用,ip:port之后输入你想要调用的函数名字echo,?后接para1=xxx¶2=xxx·······)会立即返回如下的json结果(注意端口号要一致):

模型调用的例子

首先建立一个简单逻辑回归的模型:

plumber.R如下:

脚本调用或在命令行输入:

host为0.0.0.0表示其他机器可以通过该机器在局域网的ip地址调用,port指定一个端口。

接口启动后在浏览器输入127.0.0.1:4267/predict?,返回如下结果:

如果需要返回没有中括号包裹的json,在plumber.R对应的函数上方加第二行参数:

Merry Christmas

回复爬虫爬虫三大案例实战

回复Python1小时破冰入门

回复数据挖掘R语言入门及数据挖掘

回复人工智能三个月入门人工智能

回复数据分析师数据分析师成长之路

回复机器学习机器学习的商业应用

回复数据科学数据科学实战

回复常用算法常用数据挖掘算法

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181225B0I1DI00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券